diff options
| author | Nikita Popov <nikic@php.net> | 2013-08-26 19:57:14 +0200 |
|---|---|---|
| committer | Nikita Popov <nikic@php.net> | 2013-08-26 19:57:14 +0200 |
| commit | d18b9698585820ef0b4adb9efd814d2ca26310a8 (patch) | |
| tree | ceb5625e54738e30f9b885af464629d1c01ccffd /Zend/zend_API.h | |
| parent | a13c00cd14179971efd60e8acb450a615c2aff22 (diff) | |
| download | php-git-d18b9698585820ef0b4adb9efd814d2ca26310a8.tar.gz | |
Evaluate ZVAL_ZVAL arguments only once
Also remove some isref/refcount assignments, which are no longer
necessary (as ZVAL_COPY_VALUE is used now).
Diffstat (limited to 'Zend/zend_API.h')
| -rw-r--r-- | Zend/zend_API.h | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/Zend/zend_API.h b/Zend/zend_API.h index ecc8d9acd9..1a7c66e906 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -594,22 +594,20 @@ END_EXTERN_C() Z_TYPE_P(__z) = IS_STRING; \ } while (0) -#define ZVAL_ZVAL(z, zv, copy, dtor) { \ - zend_uchar is_ref = Z_ISREF_P(z); \ - zend_uint refcount = Z_REFCOUNT_P(z); \ - ZVAL_COPY_VALUE(z, zv); \ +#define ZVAL_ZVAL(z, zv, copy, dtor) do { \ + zval *__z = (z); \ + zval *__zv = (zv); \ + ZVAL_COPY_VALUE(__z, __zv); \ if (copy) { \ - zval_copy_ctor(z); \ + zval_copy_ctor(__z); \ } \ if (dtor) { \ if (!copy) { \ - ZVAL_NULL(zv); \ + ZVAL_NULL(__zv); \ } \ - zval_ptr_dtor(&zv); \ + zval_ptr_dtor(&__zv); \ } \ - Z_SET_ISREF_TO_P(z, is_ref); \ - Z_SET_REFCOUNT_P(z, refcount); \ - } + } while (0) #define ZVAL_FALSE(z) ZVAL_BOOL(z, 0) #define ZVAL_TRUE(z) ZVAL_BOOL(z, 1) |
