From e5f160dc7ec4f5ae596a7129f368ccc06186c3ee Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 12 Oct 2018 19:00:45 +0900 Subject: Should not compare `undef` (deleted) key in hashes; fix #4136 --- src/hash.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/hash.c') diff --git a/src/hash.c b/src/hash.c index 325c7e66f..e1ceec489 100644 --- a/src/hash.c +++ b/src/hash.c @@ -402,7 +402,8 @@ sg_index_get(mrb_state *mrb, seglist *t, mrb_value key, mrb_value *vp) size_t step = 0; while (index->table[k]) { - if (sg_hash_equal(mrb, t, key, index->table[k]->key)) { + mrb_value key2 = index->table[k]->key; + if (!mrb_undef_p(key2) && sg_hash_equal(mrb, t, key, key2)) { if (vp) *vp = index->table[k]->val; return TRUE; } -- cgit v1.2.3