]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.3' into PHP-7.4
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 16 Apr 2019 10:21:16 +0000 (12:21 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 16 Apr 2019 10:21:16 +0000 (12:21 +0200)
1  2 
Zend/zend_hash.c
Zend/zend_hash.h
ext/standard/array.c

index 88eafa6d10557a68b05df3456200875b7ae9549b,8c0bce5b411ff6d47fdbf04e17a423000edb0094..5358f0d7d0cb3010870f65f81b2925682da085b3
@@@ -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;
index 0cc34ddd4754dad25ba5053cd7c9c4319eced160,2c295adca6b6920ac6a87e9f1be262aa408d52db..3341427428a56233265127c6b4b09114f316e4da
  #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)
  
Simple merge