From: Xinchen Hui Date: Sat, 12 May 2012 05:13:44 +0000 (+0800) Subject: Fixed Bug #62005 (unexpected behavior when incrementally assigning to a member of... X-Git-Tag: php-5.3.14RC1~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3332943c9d20a8b5e09816b11f38742de0e16085;p=php Fixed Bug #62005 (unexpected behavior when incrementally assigning to a member of a null object) --- diff --git a/NEWS b/NEWS index e9c13701cf..1057db7d84 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,8 @@ PHP NEWS (Laruence) - Core: + . Fixed bug #62005 (unexpected behavior when incrementally assigning to a + member of a null object). (Laruence) . Fixed bug #61730 (Segfault from array_walk modifying an array passed by reference). (Laruence) . Fixed missing bound check in iptcparse(). (chris at chiappa.net) diff --git a/Zend/tests/bug62005.phpt b/Zend/tests/bug62005.phpt new file mode 100644 index 0000000000..4ff4b2ca9a --- /dev/null +++ b/Zend/tests/bug62005.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #62005 (unexpected behavior when incrementally assigning to a member of a null object) +--FILE-- +energy += $points; + print_r($player); +} +add_points(NULL, 2); +--EXPECTF-- +Strict Standards: Creating default object from empty value in %sbug62005.php on line %d +stdClass Object +( + [energy] => 2 +) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 705c71389d..4423921649 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -432,11 +432,10 @@ static inline void make_real_object(zval **object_ptr TSRMLS_DC) || (Z_TYPE_PP(object_ptr) == IS_BOOL && Z_LVAL_PP(object_ptr) == 0) || (Z_TYPE_PP(object_ptr) == IS_STRING && Z_STRLEN_PP(object_ptr) == 0) ) { - zend_error(E_STRICT, "Creating default object from empty value"); - SEPARATE_ZVAL_IF_NOT_REF(object_ptr); zval_dtor(*object_ptr); object_init(*object_ptr); + zend_error(E_STRICT, "Creating default object from empty value"); } }