]> granicus.if.org Git - php/commitdiff
Call zend_array_dup() instead of zval_copy_ctor().
authorDmitry Stogov <dmitry@zend.com>
Tue, 2 Jun 2015 09:03:34 +0000 (12:03 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 2 Jun 2015 09:03:34 +0000 (12:03 +0300)
Zend/zend_types.h

index c1fceab07d0de4b8a2d1fb4c25847dba135e60d7..63565182ce0f82227a1ccabceacd931ecda0fd6b 100644 (file)
@@ -890,11 +890,12 @@ static zend_always_inline uint32_t zval_delref_p(zval* pz) {
 
 #define SEPARATE_ARRAY(zv) do {                                                        \
                zval *_zv = (zv);                                                               \
-               if (Z_REFCOUNT_P(_zv) > 1) {                                    \
+               zend_array *_arr = Z_ARR_P(_zv);                                \
+               if (GC_REFCOUNT(_arr) > 1) {                                    \
                        if (!Z_IMMUTABLE_P(_zv)) {                                      \
-                               Z_DELREF_P(_zv);                                                \
+                               GC_REFCOUNT(_arr)--;                                    \
                        }                                                                                       \
-                       zval_copy_ctor_func(_zv);                                       \
+                       ZVAL_ARR(_zv, zend_array_dup(_arr));            \
                }                                                                                               \
        } while (0)