From: Antony Dovgal Date: Tue, 16 Sep 2008 14:36:39 +0000 (+0000) Subject: MFH X-Git-Tag: php-5.2.7RC1~36 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=03f74b711e112b347d95f4efd3060c7310262907;p=php MFH --- diff --git a/ext/standard/php_incomplete_class.h b/ext/standard/php_incomplete_class.h index 5030e6b660..d367209810 100644 --- a/ext/standard/php_incomplete_class.h +++ b/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 { \ diff --git a/ext/standard/tests/serialize/incomplete_class.phpt b/ext/standard/tests/serialize/incomplete_class.phpt new file mode 100644 index 0000000000..8280485516 --- /dev/null +++ b/ext/standard/tests/serialize/incomplete_class.phpt @@ -0,0 +1,27 @@ +--TEST-- +(un)serializing __PHP_Incomplete_Class instance +--FILE-- +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