|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 7.3.2
+- SPL:
+ . Fixed bug #77298 (segfault occurs when add property to unserialized empty
+ ArrayObject). (jhdxr)
+
03 Jan 2019, PHP 7.3.1
- Core:
if (Z_TYPE_P(array) == IS_ARRAY) {
zval_ptr_dtor(&intern->array);
- ZVAL_COPY(&intern->array, array);
+ ZVAL_COPY_VALUE(&intern->array, array);
+ ZVAL_NULL(array);
+ SEPARATE_ARRAY(&intern->array);
} else {
spl_array_set_array(object, intern, array, 0L, 1);
}
--- /dev/null
+--TEST--\r
+Bug #77298 (segfault occurs when add property to unserialized ArrayObject)\r
+--FILE--\r
+<?php\r
+$o = new ArrayObject();\r
+$o2 = unserialize(serialize($o));\r
+$o2[1]=123;\r
+var_dump($o2);\r
+\r
+$o3 = new ArrayObject();\r
+$o3->unserialize($o->serialize());\r
+$o3['xm']=456;\r
+var_dump($o3);\r
+--EXPECT--\r
+object(ArrayObject)#2 (1) {\r
+ ["storage":"ArrayObject":private]=>\r
+ array(1) {\r
+ [1]=>\r
+ int(123)\r
+ }\r
+}\r
+object(ArrayObject)#3 (1) {\r
+ ["storage":"ArrayObject":private]=>\r
+ array(1) {\r
+ ["xm"]=>\r
+ int(456)\r
+ }\r
+}
\ No newline at end of file