From 1d4b26ecfc9500f7de48d24e8a1ba1ec2cc5eeac Mon Sep 17 00:00:00 2001 From: Carson McDonald Date: Wed, 26 Jun 2013 08:37:28 -0400 Subject: Add arena save/restore around use of hash KEY. --- src/hash.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/hash.c') diff --git a/src/hash.c b/src/hash.c index 5d78a6ea7..9b8c546b9 100644 --- a/src/hash.c +++ b/src/hash.c @@ -145,7 +145,9 @@ mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val) /* mr k = kh_get(ht, h, key); if (k == kh_end(h)) { /* expand */ + int ai = mrb_gc_arena_save(mrb); k = kh_put(ht, h, KEY(key)); + mrb_gc_arena_restore(mrb, ai); } kh_value(h, k) = val; @@ -169,7 +171,9 @@ mrb_hash_dup(mrb_state *mrb, mrb_value hash) for (k = kh_begin(h); k != kh_end(h); k++) { if (kh_exist(h,k)) { + int ai = mrb_gc_arena_save(mrb); ret_k = kh_put(ht, ret_h, KEY(kh_key(h,k))); + mrb_gc_arena_restore(mrb, ai); kh_val(ret_h, ret_k) = kh_val(h,k); } } -- cgit v1.2.3