From: Nikita Popov Date: Tue, 23 Sep 2014 19:02:32 +0000 (+0200) Subject: Fix ct binding for cuf/cufa functions X-Git-Tag: PRE_NATIVE_TLS_MERGE~158^2~49^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67a5ca6697bde602bbcc4832f5865f84bc67504b;p=php Fix ct binding for cuf/cufa functions It was checking against the wrong AST kind, so the binding was never actually done. --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 73f6a8b008..59a5ce8207 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2646,7 +2646,7 @@ static int zend_try_compile_ct_bound_init_user_func(znode *result, zend_ast *nam zend_function *fbc; zend_op *opline; - if (name_ast->kind != ZEND_AST_CONST || Z_TYPE_P(zend_ast_get_zval(name_ast)) != IS_STRING) { + if (name_ast->kind != ZEND_AST_ZVAL || Z_TYPE_P(zend_ast_get_zval(name_ast)) != IS_STRING) { return FAILURE; } @@ -2663,9 +2663,11 @@ static int zend_try_compile_ct_bound_init_user_func(znode *result, zend_ast *nam } opline = zend_emit_op(NULL, ZEND_INIT_FCALL, NULL, NULL TSRMLS_CC); + opline->extended_value = num_args; + opline->op2_type = IS_CONST; LITERAL_STR(opline->op2, lcname); - opline->extended_value = num_args; + zend_alloc_cache_slot(opline->op2.constant TSRMLS_CC); return SUCCESS; }