]> granicus.if.org Git - php/commitdiff
fix #38624 (Strange warning when incrementing an object property and exception is...
authorAntony Dovgal <tony2001@php.net>
Mon, 28 Aug 2006 10:25:49 +0000 (10:25 +0000)
committerAntony Dovgal <tony2001@php.net>
Mon, 28 Aug 2006 10:25:49 +0000 (10:25 +0000)
Zend/tests/bug38624.phpt [new file with mode: 0644]
Zend/zend_interfaces.c

diff --git a/Zend/tests/bug38624.phpt b/Zend/tests/bug38624.phpt
new file mode 100644 (file)
index 0000000..081e35c
--- /dev/null
@@ -0,0 +1,34 @@
+--TEST--
+Bug #38624 (Strange warning when incrementing an object property and exception is thrown from __get method)
+--FILE--
+<?php
+
+class impl
+{
+    public function __construct()
+    {
+       $this->counter++;
+    }
+    public function __set( $name, $value )
+    {
+        throw new Exception( "doesn't work" );
+    }
+
+    public function __get( $name )
+    {
+        throw new Exception( "doesn't work" );
+    }
+
+}
+
+$impl = new impl();
+
+echo "Done\n";
+?>
+--EXPECTF--    
+Fatal error: Uncaught exception 'Exception' with message 'doesn't work' in %s:%d
+Stack trace:
+#0 %s(%d): impl->__get('counter')
+#1 %s(%d): impl->__construct()
+#2 {main}
+  thrown in %s on line %d
index e4bd5aaf7b8aeabd91eba0cb652b3b55edc045d0..1230aeb997a5079081d2a63acf9902bbca40d1fc 100755 (executable)
@@ -93,7 +93,9 @@ ZEND_API zval* zend_call_method(zval **object_pp, zend_class_entry *obj_ce, zend
                if (!obj_ce) {
                        obj_ce = object_pp ? Z_OBJCE_PP(object_pp) : NULL;
                }
-               zend_error(E_CORE_ERROR, "Couldn't execute method %v%s%s", obj_ce ? obj_ce->name : EMPTY_ZSTR, obj_ce ? "::" : "", function_name);
+               if (!EG(exception)) {
+                       zend_error(E_CORE_ERROR, "Couldn't execute method %v%s%s", obj_ce ? obj_ce->name : EMPTY_ZSTR, obj_ce ? "::" : "", function_name);
+               }
        }
        if (!retval_ptr_ptr) {
                if (retval) {