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:
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user