From b45e99b0d5e6b1efb6aa6f38e9ab24ed93590fe2 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 9 Apr 2014 21:38:29 +0900 Subject: call kh_get before kh_put to avoid potential key lost; reported by @mirichi --- src/variable.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/variable.c') diff --git a/src/variable.c b/src/variable.c index 3dcdbf775..6503c8fb7 100644 --- a/src/variable.c +++ b/src/variable.c @@ -308,7 +308,10 @@ iv_put(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value val) khash_t(iv) *h = &t->h; khiter_t k; - k = kh_put(iv, mrb, h, sym); + k = kh_get(mt, mrb, h, sym); + if (k == kh_end(h)) { + k = kh_put(mt, mrb, h, sym); + } kh_value(h, k) = val; } -- cgit v1.2.3