function &noref() { $foo = 1; return $foo; }
$foo = new foo;
-$foo->i = &noref();
+try {
+ $foo->i = &noref();
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+}
var_dump($foo);
?>
---EXPECTF--
-Fatal error: Uncaught Error: Cannot assign by reference to overloaded object in %s:%d
-Stack trace:
-#0 {main}
- thrown in %s on line %d
+--EXPECT--
+Cannot assign by reference to overloaded object
+object(foo)#1 (1) {
+ ["var":"foo":private]=>
+ NULL
+}
variable_ptr = &EG(uninitialized_zval);
} else if (UNEXPECTED(Z_TYPE(variable) != IS_INDIRECT)) {
zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
+ zval_ptr_dtor(&variable);
variable_ptr = &EG(uninitialized_zval);
} else if (/*OP_DATA_TYPE == IS_VAR &&*/ UNEXPECTED(Z_ISERROR_P(value_ptr))) {
variable_ptr = &EG(uninitialized_zval);