]> 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 18:00:18 +0000 (18:00 +0000)
committerDmitry Stogov <dmitry@php.net>
Sat, 26 Jul 2008 18:00:18 +0000 (18:00 +0000)
Zend/tests/bug36303.phpt
Zend/tests/bug44660.phpt [new file with mode: 0755]
Zend/zend_execute.c

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 7e5b94a0e52f8e19db423ddcdf48e15dd18add6e..3b5f925eb0f605b0514346f8d130857e2b3af7b2 100644 (file)
@@ -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;