diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index ec5c7a312a8..24a3a9ebd8a 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -642,7 +642,10 @@ write_std_property: /* if we assign referenced variable, we should separate it */ if (Z_REFCOUNTED_P(value)) { if (Z_ISREF_P(value)) { - ZVAL_DUP(value, Z_REFVAL_P(value)); + zval tmp; + + ZVAL_DUP(&tmp, Z_REFVAL_P(value)); + value = &tmp; } else { Z_ADDREF_P(value); }