]> granicus.if.org Git - php/commitdiff
Fixed bug #44660 (Indexed and reference assignment to propery of non-object don't...
authorDmitry Stogov <dmitry@php.net>
Sat, 26 Jul 2008 17:59:54 +0000 (17:59 +0000)
committerDmitry Stogov <dmitry@php.net>
Sat, 26 Jul 2008 17:59:54 +0000 (17:59 +0000)
NEWS
Zend/tests/bug36303.phpt
Zend/tests/bug44660.phpt [new file with mode: 0755]
Zend/zend_execute.c

diff --git a/NEWS b/NEWS
index c9f5642f3319989f89cd8f7af5a68fd91b8163f3..6f6e5f45a0a750b4e78e9f1e928faac0f7b86f66 100644 (file)
--- 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).
index 612022ad566588e648dc7d377e318f6640d1385a..0f92323834662f32d05f7c148495c2952dbea3a9 100755 (executable)
@@ -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 (executable)
index 0000000..1027377
--- /dev/null
@@ -0,0 +1,49 @@
+--TEST--
+Bug #44660 (Indexed and reference assignment to propery of non-object don't trigger warning)
+--FILE--
+<?php
+$s = "hello";
+$a = true;
+
+echo "--> 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)
index c4b10c221d2a7a22499fd3c52f5e0b6054b52ab9..91fd3bc4d9789cf303b01a466cc5dd4c21c1f3b0 100644 (file)
@@ -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;