Compatible with PHP 7.3+

This commit is contained in:
CismonX 2018-08-26 20:33:02 +08:00
parent edda23318c
commit c221128351
2 changed files with 5 additions and 2 deletions

View File

@ -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);
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->nTableMask = HT_MIN_MASK;
HT_SET_DATA_ADDR(ht, new_data);
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);
}
}

View File

@ -27,6 +27,9 @@ extern zend_module_entry collections_module_entry;
#if PHP_VERSION_ID < 70300
#define GC_ADDREF(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
#define PHP_COLLECTIONS_COMPARE_NATURAL (1 << 0)