diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index b69d0a88d55..368d6b2dcc8 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2858,7 +2858,7 @@ static zend_always_inline void zend_assign_to_property_reference(zval *container variable_ptr = Z_INDIRECT_P(variable_ptr); } - if (UNEXPECTED(Z_ISERROR_P(variable_ptr))) { + if (UNEXPECTED(Z_ISERROR_P(variable_ptr) || EG(exception))) { variable_ptr = &EG(uninitialized_zval); } else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) { zend_throw_error(NULL, "Cannot assign by reference to overloaded object"); diff --git a/tests/classes/static_properties_003_error4.phpt b/tests/classes/static_properties_003_error4.phpt index 6a4eafcd2a8..7c54fc42adb 100644 --- a/tests/classes/static_properties_003_error4.phpt +++ b/tests/classes/static_properties_003_error4.phpt @@ -8,17 +8,20 @@ class C { $c = new C; echo "\n--> Access non-visible static prop like instance prop:\n"; -$c->y =& $ref; +try { + $c->y =& $ref; +} catch (Error $e) { + echo $e, "\n"; +} ?> ==Done== --EXPECTF-- --> Access non-visible static prop like instance prop: - -Fatal error: Uncaught Error: Cannot access protected property C::$y in %s:8 +Error: Cannot access protected property C::$y in %s:9 Stack trace: #0 {main} -Next Error: Cannot access protected property C::$y in %s:8 +Next Error: Cannot access protected property C::$y in %s:9 Stack trace: #0 {main} - thrown in %s on line 8 +==Done==