From: Dmitry Stogov Date: Sat, 26 Jul 2008 17:59:54 +0000 (+0000) Subject: Fixed bug #44660 (Indexed and reference assignment to propery of non-object don't... X-Git-Tag: php-5.3.0alpha1~103 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f5f8cba8e978a7408b337e9c5e622086a1c697ac;p=php Fixed bug #44660 (Indexed and reference assignment to propery of non-object don't trigger warning) --- diff --git a/NEWS b/NEWS index c9f5642f33..6f6e5f45a0 100644 --- a/NEWS +++ b/NEWS @@ -249,6 +249,8 @@ PHP NEWS - Fixed bug #44805 (rename() function is not portable to Windows). (Pierre) - Fixed bug #44779 (filter returns NULL in CLI when it shouldn't). (Arnaud) - Fixed bug #44742 (timezone_offset_get() causes segmentation faults). (Derick) +- Fixed bug #44660 (Indexed and reference assignment to propery of non-object + don't trigger warning). (Dmitry) - Fixed bug #44648 (Attribute names not checked for wellformedness). (Rob) - Fixed bug #44414 (Incomplete reporting about abstract methods). (Dmitry) - Fixed bug #44390 (mysqli_bind_param/bind_result and Object member variables). diff --git a/Zend/tests/bug36303.phpt b/Zend/tests/bug36303.phpt index 612022ad56..0f92323834 100755 --- a/Zend/tests/bug36303.phpt +++ b/Zend/tests/bug36303.phpt @@ -8,5 +8,7 @@ foreach($x->a->b as &$v) { echo "ok\n"; ?> --EXPECTF-- +Warning: Attempt to modify property of non-object in %sbug36303.php on line 3 + Warning: Invalid argument supplied for foreach() in %sbug36303.php on line 3 ok diff --git a/Zend/tests/bug44660.phpt b/Zend/tests/bug44660.phpt new file mode 100755 index 0000000000..1027377d34 --- /dev/null +++ b/Zend/tests/bug44660.phpt @@ -0,0 +1,49 @@ +--TEST-- +Bug #44660 (Indexed and reference assignment to propery of non-object don't trigger warning) +--FILE-- + read access: "; +echo $a->p; + +echo "\n--> direct assignment: "; +$a->p = $s; + +echo "\n--> increment: "; +$a->p++; + +echo "\n--> reference assignment:"; +$a->p =& $s; + +echo "\n--> reference assignment:"; +$s =& $a->p; + +echo "\n--> indexed assignment:"; +$a->p[0] = $s; + +echo "\n--> Confirm assignments have had no impact:\n"; +var_dump($a); +?> +--EXPECTF-- +--> read access: +Notice: Trying to get property of non-object in %sbug44660.php on line 6 + +--> direct assignment: +Warning: Attempt to assign property of non-object in %sbug44660.php on line 9 + +--> increment: +Warning: Attempt to increment/decrement property of non-object in %sbug44660.php on line 12 + +--> reference assignment: +Warning: Attempt to modify property of non-object in %sbug44660.php on line 15 + +--> reference assignment: +Warning: Attempt to modify property of non-object in %sbug44660.php on line 18 + +--> indexed assignment: +Warning: Attempt to modify property of non-object in %sbug44660.php on line 21 + +--> Confirm assignments have had no impact: +bool(true) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index c4b10c221d..91fd3bc4d9 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1175,6 +1175,7 @@ static void zend_fetch_property_address(temp_variable *result, zval **container_ } object_init(container); } else { + zend_error(E_WARNING, "Attempt to modify property of non-object"); result->var.ptr_ptr = &EG(error_zval_ptr); PZVAL_LOCK(EG(error_zval_ptr)); return;