diff options
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r-- | Zend/zend_compile.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 6eec6615af..c196e39887 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2406,6 +2406,7 @@ uint32_t zend_compile_args(zend_ast *ast, zend_function *fbc) /* {{{ */ zend_compile_expr(&arg_node, arg->child[0]); opline = zend_emit_op(NULL, ZEND_SEND_UNPACK, &arg_node, NULL); opline->op2.num = arg_count; + opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, arg_count); continue; } @@ -2468,6 +2469,7 @@ uint32_t zend_compile_args(zend_ast *ast, zend_function *fbc) /* {{{ */ SET_NODE(opline->op1, &arg_node); SET_UNUSED(opline->op2); opline->op2.opline_num = arg_num; + opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, arg_num); if (opcode == ZEND_SEND_VAR_NO_REF) { if (fbc) { @@ -2695,7 +2697,7 @@ int zend_compile_func_cufa(znode *result, zend_ast_list *args, zend_string *lcna return FAILURE; } - zend_compile_init_user_func(args->child[0], 1, lcname); + zend_compile_init_user_func(args->child[0], 0, lcname); zend_compile_expr(&arg_node, args->child[1]); zend_emit_op(NULL, ZEND_SEND_ARRAY, &arg_node, NULL); zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL); @@ -2736,7 +2738,8 @@ int zend_compile_func_cuf(znode *result, zend_ast_list *args, zend_string *lcnam opline = zend_emit_op(NULL, ZEND_SEND_VAL, &arg_node, NULL); } - opline->op2.opline_num = i; + opline->op2.num = i; + opline->result.var = (uint32_t)(zend_intptr_t)ZEND_CALL_ARG(NULL, i); } zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL); |