@@ -1989,7 +1989,6 @@ ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source)
1989
1989
GC_SET_REFCOUNT (target , 1 );
1990
1990
GC_TYPE_INFO (target ) = IS_ARRAY | (GC_COLLECTABLE << GC_FLAGS_SHIFT );
1991
1991
1992
- target -> nTableSize = source -> nTableSize ;
1993
1992
target -> pDestructor = ZVAL_PTR_DTOR ;
1994
1993
1995
1994
if (source -> nNumOfElements == 0 ) {
@@ -1999,13 +1998,15 @@ ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source)
1999
1998
target -> nNumOfElements = 0 ;
2000
1999
target -> nNextFreeElement = 0 ;
2001
2000
target -> nInternalPointer = 0 ;
2001
+ target -> nTableSize = HT_MIN_SIZE ;
2002
2002
HT_SET_DATA_ADDR (target , & uninitialized_bucket );
2003
2003
} else if (GC_FLAGS (source ) & IS_ARRAY_IMMUTABLE ) {
2004
2004
HT_FLAGS (target ) = HT_FLAGS (source );
2005
2005
target -> nTableMask = source -> nTableMask ;
2006
2006
target -> nNumUsed = source -> nNumUsed ;
2007
2007
target -> nNumOfElements = source -> nNumOfElements ;
2008
2008
target -> nNextFreeElement = source -> nNextFreeElement ;
2009
+ target -> nTableSize = source -> nTableSize ;
2009
2010
HT_SET_DATA_ADDR (target , emalloc (HT_SIZE (target )));
2010
2011
target -> nInternalPointer = source -> nInternalPointer ;
2011
2012
memcpy (HT_GET_DATA_ADDR (target ), HT_GET_DATA_ADDR (source ), HT_USED_SIZE (source ));
@@ -2015,6 +2016,7 @@ ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source)
2015
2016
target -> nNumUsed = source -> nNumUsed ;
2016
2017
target -> nNumOfElements = source -> nNumOfElements ;
2017
2018
target -> nNextFreeElement = source -> nNextFreeElement ;
2019
+ target -> nTableSize = source -> nTableSize ;
2018
2020
HT_SET_DATA_ADDR (target , emalloc (HT_SIZE_EX (target -> nTableSize , HT_MIN_MASK )));
2019
2021
target -> nInternalPointer =
2020
2022
(source -> nInternalPointer < source -> nNumUsed ) ?
@@ -2035,6 +2037,7 @@ ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source)
2035
2037
(source -> nInternalPointer < source -> nNumUsed ) ?
2036
2038
source -> nInternalPointer : 0 ;
2037
2039
2040
+ target -> nTableSize = source -> nTableSize ;
2038
2041
HT_SET_DATA_ADDR (target , emalloc (HT_SIZE (target )));
2039
2042
HT_HASH_RESET (target );
2040
2043
0 commit comments