diff options
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -411,10 +411,11 @@ rb_hash_delete(hash, key) VALUE val; rb_hash_modify(hash); - if (RHASH(hash)->iter_lev > 0 && - st_delete_safe(RHASH(hash)->tbl, &key, &val, Qundef)) { - FL_SET(hash, HASH_DELETED); - return val; + if (RHASH(hash)->iter_lev > 0) { + if (st_delete_safe(RHASH(hash)->tbl, &key, &val, Qundef)) { + FL_SET(hash, HASH_DELETED); + return val; + } } else if (st_delete(RHASH(hash)->tbl, &key, &val)) return val; |