summaryrefslogtreecommitdiff
path: root/Zend/zend_API.h
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-08 11:06:50 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-08 12:30:54 +0100
commita9d4caeecea947e7ee5425661204045c0bbba66f (patch)
tree361b0a2910c5627c53ae1e4edb9c9d6e95a149eb /Zend/zend_API.h
parent7a6fa7f6247d13d4d464a948451866b554721f81 (diff)
downloadphp-git-a9d4caeecea947e7ee5425661204045c0bbba66f.tar.gz
Add ZEND_TRY_ASSIGN_BOOL API
Cherry-picked from master, this is of course also necessary in 7.4...
Diffstat (limited to 'Zend/zend_API.h')
-rw-r--r--Zend/zend_API.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 7d9aad4e4b..21ba965000 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -716,6 +716,20 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
ZVAL_TRUE(_zv); \
} while (0)
+#define ZEND_TRY_ASSIGN_BOOL(zv, bval) do { \
+ zval *_zv = zv; \
+ if (EXPECTED(Z_ISREF_P(_zv))) { \
+ zend_reference *ref = Z_REF_P(_zv); \
+ if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
+ zend_try_assign_typed_ref_bool(ref, 1); \
+ break; \
+ } \
+ _zv = &ref->val; \
+ } \
+ zval_ptr_dtor(_zv); \
+ ZVAL_BOOL(_zv, bval); \
+} while (0)
+
#define ZEND_TRY_ASSIGN_LONG(zv, lval) do { \
zval *_zv = zv; \
if (EXPECTED(Z_ISREF_P(_zv))) { \