From: Nikita Popov Date: Tue, 7 Jul 2020 07:57:07 +0000 (+0200) Subject: Merge branch 'PHP-7.4' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e39469678ab94c174c2a2abc476717febc12438;p=php Merge branch 'PHP-7.4' * PHP-7.4: Fixed bug #79783 --- 1e39469678ab94c174c2a2abc476717febc12438 diff --cc Zend/zend_compile.c index ea5baf2a12,10ea65f89d..95342cc8e2 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@@ -3197,26 -3004,30 +3197,30 @@@ uint32_t zend_compile_args(zend_ast *as } arg_count++; - if (zend_is_variable_or_call(arg)) { - if (zend_is_call(arg)) { - zend_compile_var(&arg_node, arg, BP_VAR_R, 0); - if (arg_node.op_type & (IS_CONST|IS_TMP_VAR)) { - /* Function call was converted into builtin instruction */ - if (!fbc || ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) { - opcode = ZEND_SEND_VAL_EX; - } else { - opcode = ZEND_SEND_VAL; - } + if (zend_is_call(arg)) { + zend_compile_var(&arg_node, arg, BP_VAR_R, 0); + if (arg_node.op_type & (IS_CONST|IS_TMP_VAR)) { + /* Function call was converted into builtin instruction */ - opcode = ZEND_SEND_VAL; ++ if (!fbc || ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) { ++ opcode = ZEND_SEND_VAL_EX; + } else { - if (fbc) { - if (ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) { - opcode = ZEND_SEND_VAR_NO_REF; - } else if (ARG_MAY_BE_SENT_BY_REF(fbc, arg_num)) { - opcode = ZEND_SEND_VAL; - } else { - opcode = ZEND_SEND_VAR; - } ++ opcode = ZEND_SEND_VAL; ++ } + } else { + if (fbc) { + if (ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) { + opcode = ZEND_SEND_VAR_NO_REF; + } else if (ARG_MAY_BE_SENT_BY_REF(fbc, arg_num)) { + opcode = ZEND_SEND_VAL; } else { - opcode = ZEND_SEND_VAR_NO_REF_EX; + opcode = ZEND_SEND_VAR; } + } else { + opcode = ZEND_SEND_VAR_NO_REF_EX; } - } else if (fbc) { + } + } else if (zend_is_variable(arg)) { + if (fbc) { if (ARG_SHOULD_BE_SENT_BY_REF(fbc, arg_num)) { zend_compile_var(&arg_node, arg, BP_VAR_W, 1); opcode = ZEND_SEND_REF;