From: Zeev Suraski Date: Tue, 8 Feb 2000 20:10:47 +0000 (+0000) Subject: Fix an elusive bug X-Git-Tag: BEFORE_SAPIFICATION_FEB_10_2000~42 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ca5622c71179156d27442fd760b8164261bba6c2;p=php Fix an elusive bug --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index d798e5f59d..53514d1c3b 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -332,11 +332,12 @@ static inline void zend_assign_to_variable(znode *result, znode *op1, znode *op2 if (PZVAL_IS_REF(variable_ptr)) { if (variable_ptr!=value) { short refcount=variable_ptr->refcount; + zval garbage; if (type!=IS_TMP_VAR) { value->refcount++; } - zendi_zval_dtor(*variable_ptr); + garbage = *variable_ptr; *variable_ptr = *value; variable_ptr->refcount = refcount; variable_ptr->is_ref = 1; @@ -344,6 +345,7 @@ static inline void zend_assign_to_variable(znode *result, znode *op1, znode *op2 zendi_zval_copy_ctor(*variable_ptr); value->refcount--; } + zendi_zval_dtor(garbage); } } else { variable_ptr->refcount--;