need to call write barrier on hash keys; ref #2375

parent fe95f440
...@@ -216,11 +216,12 @@ mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val) ...@@ -216,11 +216,12 @@ mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val)
if (r != 0) { if (r != 0) {
/* expand */ /* expand */
int ai = mrb_gc_arena_save(mrb); int ai = mrb_gc_arena_save(mrb);
kh_key(h, k) = KEY(key); key = kh_key(h, k) = KEY(key);
mrb_gc_arena_restore(mrb, ai); mrb_gc_arena_restore(mrb, ai);
kh_value(h, k).n = kh_size(h)-1; kh_value(h, k).n = kh_size(h)-1;
} }
mrb_field_write_barrier_value(mrb, (struct RBasic*)RHASH(hash), key);
mrb_field_write_barrier_value(mrb, (struct RBasic*)RHASH(hash), val); mrb_field_write_barrier_value(mrb, (struct RBasic*)RHASH(hash), val);
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment