1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 08:12:21 +01:00

Merge branch 'PHP-8.2'

* PHP-8.2:
  Fix serialization of empty SplFixedArray
This commit is contained in:
Nikita Popov
2022-09-15 22:36:40 +02:00
2 changed files with 15 additions and 6 deletions

View File

@@ -596,8 +596,9 @@ PHP_METHOD(SplFixedArray, __serialize)
RETURN_THROWS();
}
uint32_t property_num = zend_hash_num_elements(intern->std.properties);
array_init_size(return_value, intern->array.size + property_num);
uint32_t num_properties =
intern->std.properties ? zend_hash_num_elements(intern->std.properties) : 0;
array_init_size(return_value, intern->array.size + num_properties);
/* elements */
for (zend_long i = 0; i < intern->array.size; i++) {
@@ -607,10 +608,12 @@ PHP_METHOD(SplFixedArray, __serialize)
}
/* members */
ZEND_HASH_FOREACH_STR_KEY_VAL(intern->std.properties, key, current) {
zend_hash_add(Z_ARRVAL_P(return_value), key, current);
Z_TRY_ADDREF_P(current);
} ZEND_HASH_FOREACH_END();
if (intern->std.properties) {
ZEND_HASH_FOREACH_STR_KEY_VAL(intern->std.properties, key, current) {
zend_hash_add(Z_ARRVAL_P(return_value), key, current);
Z_TRY_ADDREF_P(current);
} ZEND_HASH_FOREACH_END();
}
}
PHP_METHOD(SplFixedArray, __unserialize)

View File

@@ -38,6 +38,9 @@ $array->__unserialize([
]);
var_dump($array);
var_dump($s = serialize(new SplFixedArray));
var_dump(unserialize($s));
?>
--EXPECTF--
Deprecated: Creation of dynamic property SplFixedArray::$foo is deprecated in %s on line %d
@@ -71,3 +74,6 @@ object(SplFixedArray)#5 (1) {
[0]=>
NULL
}
string(25) "O:13:"SplFixedArray":0:{}"
object(SplFixedArray)#1 (0) {
}