From: Nikita Popov Date: Thu, 4 Jul 2019 13:08:47 +0000 (+0200) Subject: Assert that HT entries using add_new APIs are really new X-Git-Tag: php-7.4.0alpha3~41 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6a9127c100dd6745103ff603ca39fa361431d742;p=php Assert that HT entries using add_new APIs are really new --- diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 3d631526f6..c2c8cf825f 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -725,12 +725,13 @@ static zend_always_inline zval *_zend_hash_add_or_update_i(HashTable *ht, zend_s zend_string_hash_val(key); } } - } else if ((flag & HASH_ADD_NEW) == 0) { + } else if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) { p = zend_hash_find_bucket(ht, key, 0); if (p) { zval *data; + ZEND_ASSERT((flag & HASH_ADD_NEW) == 0); if (flag & HASH_ADD) { if (!(flag & HASH_UPDATE_INDIRECT)) { return NULL; @@ -1012,9 +1013,10 @@ convert_to_hash: } zend_hash_real_init_mixed(ht); } else { - if ((flag & HASH_ADD_NEW) == 0) { + if ((flag & HASH_ADD_NEW) == 0 || ZEND_DEBUG) { p = zend_hash_index_find_bucket(ht, h); if (p) { + ZEND_ASSERT((flag & HASH_ADD_NEW) == 0); goto replace; } }