diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-08 11:06:50 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-08 12:30:54 +0100 |
commit | a9d4caeecea947e7ee5425661204045c0bbba66f (patch) | |
tree | 361b0a2910c5627c53ae1e4edb9c9d6e95a149eb /Zend/zend_API.h | |
parent | 7a6fa7f6247d13d4d464a948451866b554721f81 (diff) | |
download | php-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.h | 14 |
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))) { \ |