From: Nikita Popov Date: Tue, 16 Apr 2019 10:19:37 +0000 (+0200) Subject: Don't overwrite iterator count during real init X-Git-Tag: php-7.4.0alpha1~486 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd6ebf40b205387457d51288691e31a05ce7ad27;p=php Don't overwrite iterator count during real init --- diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 5358f0d7d0..e4024d9688 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -129,7 +129,8 @@ static zend_always_inline void zend_hash_real_init_packed_ex(HashTable *ht) data = emalloc(HT_SIZE_EX(ht->nTableSize, HT_MIN_MASK)); } HT_SET_DATA_ADDR(ht, data); - HT_FLAGS(ht) = HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS; + /* Don't overwrite iterator count. */ + ht->u.v.flags = HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS; HT_HASH_RESET_PACKED(ht); } @@ -144,7 +145,8 @@ static zend_always_inline void zend_hash_real_init_mixed_ex(HashTable *ht) data = emalloc(HT_SIZE_EX(HT_MIN_SIZE, HT_SIZE_TO_MASK(HT_MIN_SIZE))); ht->nTableMask = HT_SIZE_TO_MASK(HT_MIN_SIZE); HT_SET_DATA_ADDR(ht, data); - HT_FLAGS(ht) = HASH_FLAG_STATIC_KEYS; + /* Don't overwrite iterator count. */ + ht->u.v.flags = HASH_FLAG_STATIC_KEYS; #ifdef __SSE2__ do { __m128i xmm0 = _mm_setzero_si128();