From: Dmitry Stogov Date: Fri, 28 Feb 2014 08:21:12 +0000 (+0400) Subject: Fixed SEPARATE_ZVAL_IF_REF() X-Git-Tag: POST_PHPNG_MERGE~412^2~487^2~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cee824bbef922334a2db1aa6308a6079f08dffd2;p=php Fixed SEPARATE_ZVAL_IF_REF() --- diff --git a/Zend/zend.h b/Zend/zend.h index 1ac7914c75..85e1287d50 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -703,6 +703,15 @@ END_EXTERN_C() #define SEPARATE_ZVAL_IF_REF(zv) \ if (Z_ISREF_P(zv)) { \ + if (Z_REFCOUNT_P(zv) == 1) { \ + zend_reference *ref = Z_REF_P(zv); \ + ZVAL_COPY_VALUE(zv, &ref->val); \ + efree(ref); \ + } else { \ + zval *ref = Z_REFVAL_P(zv); \ + Z_DELREF_P(zv); \ + ZVAL_DUP(zv, ref); \ + } \ SEPARATE_ZVAL(zv); \ }