From 1e355b41737e5bc8f79d2f9896ce30a572f1ed20 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Sat, 26 Jul 2008 18:00:18 +0000 Subject: [PATCH] Fixed bug #44660 (Indexed and reference assignment to propery of non-object don't trigger warning) --- Zend/tests/bug36303.phpt | 2 ++ Zend/tests/bug44660.phpt | 49 ++++++++++++++++++++++++++++++++++++++++ Zend/zend_execute.c | 1 + 3 files changed, 52 insertions(+) create mode 100755 Zend/tests/bug44660.phpt 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 7e5b94a0e5..3b5f925eb0 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1289,6 +1289,7 @@ static void zend_fetch_property_address(temp_variable *result, zval **container_ zend_error(E_STRICT, "Creating default object from empty value"); 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; -- 2.40.0