From: Antony Dovgal Date: Mon, 28 Aug 2006 10:25:49 +0000 (+0000) Subject: fix #38624 (Strange warning when incrementing an object property and exception is... X-Git-Tag: RELEASE_1_0_0RC1~1871 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dd9165d60a71422ccfdcaee66b4f3d89f042a259;p=php fix #38624 (Strange warning when incrementing an object property and exception is thrown from __get method) --- diff --git a/Zend/tests/bug38624.phpt b/Zend/tests/bug38624.phpt new file mode 100644 index 0000000000..081e35c72a --- /dev/null +++ b/Zend/tests/bug38624.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #38624 (Strange warning when incrementing an object property and exception is thrown from __get method) +--FILE-- +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 diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c index e4bd5aaf7b..1230aeb997 100755 --- a/Zend/zend_interfaces.c +++ b/Zend/zend_interfaces.c @@ -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) {