]> granicus.if.org Git - php/commitdiff
Fixed reference support
authorDmitry Stogov <dmitry@zend.com>
Thu, 13 Mar 2014 13:59:50 +0000 (17:59 +0400)
committerDmitry Stogov <dmitry@zend.com>
Thu, 13 Mar 2014 13:59:50 +0000 (17:59 +0400)
Zend/zend_API.h

index da401fe951cf5c03f0758ccf7a279a0191fb8c4c..206d9cfbed80471405823c582a669be049f78090 100644 (file)
@@ -574,7 +574,12 @@ END_EXTERN_C()
 #define ZVAL_ZVAL(z, zv, copy, dtor) do {              \
                zval *__z = (z);                                                \
                zval *__zv = (zv);                                              \
-               ZVAL_COPY_VALUE(__z, __zv);                             \
+               if (EXPECTED(!Z_ISREF_P(__zv))) {               \
+                       ZVAL_COPY_VALUE(__z, __zv);                     \
+               } else {                                \
+                       ZVAL_COPY_VALUE(__z,                \
+                               Z_REFVAL_P(__zv));                              \
+               }                                                                               \
                if (copy) {                                                             \
                        zval_copy_ctor(__z);                            \
            }                                                                           \