summaryrefslogtreecommitdiff
path: root/Zend/zend_API.h
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2013-08-26 19:57:14 +0200
committerNikita Popov <nikic@php.net>2013-08-26 19:57:14 +0200
commitd18b9698585820ef0b4adb9efd814d2ca26310a8 (patch)
treeceb5625e54738e30f9b885af464629d1c01ccffd /Zend/zend_API.h
parenta13c00cd14179971efd60e8acb450a615c2aff22 (diff)
downloadphp-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.h18
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)