diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-01-29 09:40:06 +0100 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-01-29 09:40:06 +0100 |
| commit | 14684af0d0194199291cbdd528886941fdab7635 (patch) | |
| tree | 399a4a2d933032bd0b90ead12924f51c9519ad0c | |
| parent | ab3c94a54f173a8e5f8be2a2e552cb6a02177f42 (diff) | |
| parent | 34898e97663084c45b71385ef886e830e023da93 (diff) | |
| download | php-git-14684af0d0194199291cbdd528886941fdab7635.tar.gz | |
Merge branch 'PHP-7.2' into PHP-7.3
| -rw-r--r-- | Zend/zend_compile.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index e22e3f8e37..fccc45c994 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3658,7 +3658,7 @@ int zend_compile_func_cuf(znode *result, zend_ast_list *args, zend_string *lcnam } /* }}} */ -static int zend_compile_assert(znode *result, zend_ast_list *args, zend_string *name, zend_function *fbc) /* {{{ */ +static void zend_compile_assert(znode *result, zend_ast_list *args, zend_string *name, zend_function *fbc) /* {{{ */ { if (EG(assertions) >= 0) { znode name_node; @@ -3701,8 +3701,6 @@ static int zend_compile_assert(znode *result, zend_ast_list *args, zend_string * result->op_type = IS_CONST; ZVAL_TRUE(&result->u.constant); } - - return SUCCESS; } /* }}} */ @@ -3909,10 +3907,6 @@ int zend_try_compile_special_func(znode *result, zend_string *lcname, zend_ast_l return FAILURE; } - if (zend_string_equals_literal(lcname, "assert")) { - return zend_compile_assert(result, args, lcname, fbc); - } - if (CG(compiler_options) & ZEND_COMPILE_NO_BUILTINS) { return FAILURE; } @@ -4015,8 +4009,16 @@ void zend_compile_call(znode *result, zend_ast *ast, uint32_t type) /* {{{ */ zend_op *opline; lcname = zend_string_tolower(Z_STR_P(name)); - fbc = zend_hash_find_ptr(CG(function_table), lcname); + + /* Special assert() handling should apply independently of compiler flags. */ + if (fbc && zend_string_equals_literal(lcname, "assert")) { + zend_compile_assert(result, zend_ast_get_list(args_ast), lcname, fbc); + zend_string_release(lcname); + zval_ptr_dtor(&name_node.u.constant); + return; + } + if (!fbc || (fbc->type == ZEND_INTERNAL_FUNCTION && (CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS)) || (fbc->type == ZEND_USER_FUNCTION && (CG(compiler_options) & ZEND_COMPILE_IGNORE_USER_FUNCTIONS)) |
