From: Dmitry Stogov Date: Wed, 1 Feb 2017 13:05:57 +0000 (+0300) Subject: Merge branch 'PHP-7.0' into PHP-7.1 X-Git-Tag: php-7.1.3RC1~78 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8f7f8d3f9b551c64d029c0df7217f2b168a1201e;p=php Merge branch 'PHP-7.0' into PHP-7.1 * PHP-7.0: fixed macro --- 8f7f8d3f9b551c64d029c0df7217f2b168a1201e diff --cc Zend/zend_types.h index fbf990821b,7230066050..a733177b4c --- a/Zend/zend_types.h +++ b/Zend/zend_types.h @@@ -921,28 -910,12 +921,29 @@@ static zend_always_inline uint32_t zval efree_size(ref, sizeof(zend_reference)); \ } while (0) +#define ZVAL_COPY_UNREF(z, v) do { \ + zval *_z3 = (v); \ + if (Z_REFCOUNTED_P(_z3)) { \ + if (UNEXPECTED(Z_ISREF_P(_z3)) \ + && UNEXPECTED(Z_REFCOUNT_P(_z3) == 1)) { \ + ZVAL_UNREF(_z3); \ + if (Z_REFCOUNTED_P(_z3)) { \ + Z_ADDREF_P(_z3); \ + } \ + } else { \ + Z_ADDREF_P(_z3); \ + } \ + } \ + ZVAL_COPY_VALUE(z, _z3); \ + } while (0) + + #define SEPARATE_STRING(zv) do { \ zval *_zv = (zv); \ - if (Z_REFCOUNTED_P(_zv) && \ - Z_REFCOUNT_P(_zv) > 1) { \ - Z_DELREF_P(_zv); \ + if (Z_REFCOUNT_P(_zv) > 1) { \ + if (Z_REFCOUNTED_P(_zv)); \ + Z_DELREF_P(_zv); \ + } \ zval_copy_ctor_func(_zv); \ } \ } while (0)