Antony Dovgal 18 years ago
parent
commit
86660c69b7
  1. 4
      ext/standard/php_incomplete_class.h
  2. 27
      ext/standard/tests/serialize/incomplete_class.phpt

4
ext/standard/php_incomplete_class.h

@ -31,6 +31,10 @@
if (Z_OBJ_HT_P(struc)->get_class_entry && \
Z_OBJCE_P(struc) == BG(incomplete_class)) { \
class_name = php_lookup_class_name(struc, &name_len); \
if (!class_name) { \
name_len = sizeof(INCOMPLETE_CLASS) - 1; \
class_name = estrndup(INCOMPLETE_CLASS, name_len); \
} \
free_class_name = 1; \
incomplete_class = 1; \
} else { \

27
ext/standard/tests/serialize/incomplete_class.phpt

@ -0,0 +1,27 @@
--TEST--
(un)serializing __PHP_Incomplete_Class instance
--FILE--
<?php
$d = serialize(new __PHP_Incomplete_Class);
$o = unserialize($d);
var_dump($o);
$o->test = "a";
var_dump($o->test);
var_dump($o->test2);
echo "Done\n";
?>
--EXPECTF--
object(__PHP_Incomplete_Class)#%d (0) {
}
Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "unknown" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line %d
Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "unknown" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line %d
NULL
Notice: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "unknown" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in %s on line %d
NULL
Done
Loading…
Cancel
Save