summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-01-29 09:40:19 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-01-29 09:40:19 +0100
commit16460ebc81afab482e5e6abea5cf94e4c4b225e4 (patch)
tree1e4a74e87d1babc8a94b73b2cea43c5a357d6f16
parent8eeb1102d0f7caf2441ad92da3cfa6060e2e04fc (diff)
parent14684af0d0194199291cbdd528886941fdab7635 (diff)
downloadphp-git-16460ebc81afab482e5e6abea5cf94e4c4b225e4.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
-rw-r--r--Zend/zend_compile.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 01c90559db..5f86710b24 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3426,7 +3426,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;
@@ -3469,8 +3469,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;
}
/* }}} */
@@ -3693,10 +3691,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;
}
@@ -3805,8 +3799,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
/* Don't use INIT_FCALL for recursive calls */
|| (fbc == (zend_function*)CG(active_op_array))