diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-07-04 15:08:47 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-07-04 17:12:55 +0200 |
commit | 6a9127c100dd6745103ff603ca39fa361431d742 (patch) | |
tree | 463906970dcbe5aecf9dfe6dc58c3888a4298b31 | |
parent | ef05eab432625dd6a2e62055ea7723d64bed593e (diff) | |
download | php-git-6a9127c100dd6745103ff603ca39fa361431d742.tar.gz |
Assert that HT entries using add_new APIs are really new
-rw-r--r-- | Zend/zend_hash.c | 6 |
1 files changed, 4 insertions, 2 deletions
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; } } |