From ba30f1e946b07c1e6c9571f348a2c3340f2df39d Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 4 Mar 2014 17:04:46 +0400 Subject: [PATCH] Fixed assign by reference --- Zend/zend_execute.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index db08f3c742..a2d4be204a 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -623,10 +623,11 @@ static void zend_assign_to_variable_reference(zval *variable_ptr, zval *value_pt if (variable_ptr == &EG(error_zval) || value_ptr == &EG(error_zval)) { ZVAL_NULL(variable_ptr); } else if (EXPECTED(variable_ptr != value_ptr)) { + zval tmp; SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr); - Z_ADDREF_P(value_ptr); + ZVAL_COPY(&tmp, value_ptr); zval_ptr_dtor(variable_ptr); - ZVAL_COPY_VALUE(variable_ptr, value_ptr); + ZVAL_COPY_VALUE(variable_ptr, &tmp); } else if (!Z_ISREF_P(variable_ptr)) { ZVAL_NEW_REF(variable_ptr, variable_ptr); } -- 2.50.1