From: Nikita Popov Date: Tue, 16 Apr 2019 10:21:16 +0000 (+0200) Subject: Merge branch 'PHP-7.3' into PHP-7.4 X-Git-Tag: php-7.4.0alpha1~487 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2bdd212887d4ee3fd606df18b12038567f33b90b;p=php Merge branch 'PHP-7.3' into PHP-7.4 --- 2bdd212887d4ee3fd606df18b12038567f33b90b diff --cc Zend/zend_hash.c index 88eafa6d10,8c0bce5b41..5358f0d7d0 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@@ -2020,10 -1936,9 +2021,10 @@@ ZEND_API HashTable* ZEND_FASTCALL zend_ target->nNumOfElements = 0; target->nNextFreeElement = 0; target->nInternalPointer = 0; + target->nTableSize = HT_MIN_SIZE; HT_SET_DATA_ADDR(target, &uninitialized_bucket); } else if (GC_FLAGS(source) & IS_ARRAY_IMMUTABLE) { - HT_FLAGS(target) = HT_FLAGS(source); + HT_FLAGS(target) = HT_FLAGS(source) & HASH_FLAG_MASK; target->nTableMask = source->nTableMask; target->nNumUsed = source->nNumUsed; target->nNumOfElements = source->nNumOfElements; diff --cc Zend/zend_hash.h index 0cc34ddd47,2c295adca6..3341427428 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@@ -40,15 -40,11 +40,18 @@@ #define HASH_FLAG_HAS_EMPTY_IND (1<<5) #define HASH_FLAG_ALLOW_COW_VIOLATION (1<<6) + /* Only the low byte are real flags */ + #define HASH_FLAG_MASK 0xff + #define HT_FLAGS(ht) (ht)->u.flags +#define HT_INVALIDATE(ht) do { \ + HT_FLAGS(ht) = HASH_FLAG_UNINITIALIZED; \ + } while (0) + +#define HT_IS_INITIALIZED(ht) \ + ((HT_FLAGS(ht) & HASH_FLAG_UNINITIALIZED) == 0) + #define HT_IS_PACKED(ht) \ ((HT_FLAGS(ht) & HASH_FLAG_PACKED) != 0)