Compatible with PHP 7.3+
This commit is contained in:
parent
edda23318c
commit
c221128351
|
@ -342,12 +342,12 @@ static zend_always_inline void zend_hash_sort_by(zend_array* ht)
|
||||||
{
|
{
|
||||||
void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
|
void *new_data, *old_data = HT_GET_DATA_ADDR(ht);
|
||||||
Bucket *old_buckets = ht->arData;
|
Bucket *old_buckets = ht->arData;
|
||||||
new_data = pemalloc(HT_SIZE_EX(ht->nTableSize, HT_MIN_MASK), (ht->u.flags & HASH_FLAG_PERSISTENT));
|
new_data = pemalloc(HT_SIZE_EX(ht->nTableSize, HT_MIN_MASK), HT_IS_PERSISTENT(ht));
|
||||||
ht->u.flags |= HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS;
|
ht->u.flags |= HASH_FLAG_PACKED | HASH_FLAG_STATIC_KEYS;
|
||||||
ht->nTableMask = HT_MIN_MASK;
|
ht->nTableMask = HT_MIN_MASK;
|
||||||
HT_SET_DATA_ADDR(ht, new_data);
|
HT_SET_DATA_ADDR(ht, new_data);
|
||||||
memcpy(ht->arData, old_buckets, sizeof(Bucket) * ht->nNumUsed);
|
memcpy(ht->arData, old_buckets, sizeof(Bucket) * ht->nNumUsed);
|
||||||
pefree(old_data, ht->u.flags & HASH_FLAG_PERSISTENT & HASH_FLAG_PERSISTENT);
|
pefree(old_data, HT_IS_PERSISTENT(ht));
|
||||||
HT_HASH_RESET_PACKED(ht);
|
HT_HASH_RESET_PACKED(ht);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,9 @@ extern zend_module_entry collections_module_entry;
|
||||||
#if PHP_VERSION_ID < 70300
|
#if PHP_VERSION_ID < 70300
|
||||||
#define GC_ADDREF(p) ++GC_REFCOUNT(p)
|
#define GC_ADDREF(p) ++GC_REFCOUNT(p)
|
||||||
#define GC_DELREF(p) --GC_REFCOUNT(p)
|
#define GC_DELREF(p) --GC_REFCOUNT(p)
|
||||||
|
#define HT_IS_PERSISTENT(ht) (ht)->u.flags & HASH_FLAG_PERSISTENT
|
||||||
|
#else
|
||||||
|
#define HT_IS_PERSISTENT(ht) GC_FLAGS(ht) & IS_ARRAY_PERSISTENT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PHP_COLLECTIONS_COMPARE_NATURAL (1 << 0)
|
#define PHP_COLLECTIONS_COMPARE_NATURAL (1 << 0)
|
||||||
|
|
Reference in New Issue