]> granicus.if.org Git - php/commitdiff
Add ZEND_TRY_ASSIGN_BOOL API
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 8 Feb 2019 10:06:50 +0000 (11:06 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 8 Feb 2019 11:30:54 +0000 (12:30 +0100)
Cherry-picked from master, this is of course also necessary in 7.4...

Zend/zend_API.h

index 7d9aad4e4b080b056b8ef904955fe01fd8bde8d4..21ba965000077a029c349e564387419a59c91587 100644 (file)
@@ -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))) { \