From: Nikita Popov Date: Tue, 28 Jun 2016 18:57:55 +0000 (+0200) Subject: Merge branch 'PHP-7.0' X-Git-Tag: php-7.1.0alpha3~64 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=45cfe7852a3364727d3a7e5425cb1567b02ea843;p=php Merge branch 'PHP-7.0' Conflicts: Zend/zend_vm_def.h Zend/zend_vm_execute.h --- 45cfe7852a3364727d3a7e5425cb1567b02ea843 diff --cc Zend/zend_vm_def.h index dcfaf97b10,83e74bc8ac..027f798c3a --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@@ -4675,31 -4654,27 +4675,26 @@@ ZEND_VM_HANDLER(120, ZEND_SEND_USER, VA arg = GET_OP1_ZVAL_PTR(BP_VAR_R); param = ZEND_CALL_VAR(EX(call), opline->result.var); - if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { - if (UNEXPECTED(!Z_ISREF_P(arg))) { - if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { - - zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given", - opline->op2.num, - EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "", - EX(call)->func->common.scope ? "::" : "", - ZSTR_VAL(EX(call)->func->common.function_name)); - - if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) { - OBJ_RELEASE((zend_object*)EX(call)->func->common.prototype); - } - if (Z_TYPE(EX(call)->This) == IS_OBJECT) { - OBJ_RELEASE(Z_OBJ(EX(call)->This)); - } - ZVAL_UNDEF(param); - EX(call)->func = (zend_function*)&zend_pass_function; - Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); + if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) { + zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given", + opline->op2.num, + EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "", + EX(call)->func->common.scope ? "::" : "", + ZSTR_VAL(EX(call)->func->common.function_name)); - FREE_OP1(); - ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); - } + if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE((zend_object*)EX(call)->func->common.prototype); + } - if (Z_OBJ(EX(call)->This)) { ++ if (Z_TYPE(EX(call)->This) == IS_OBJECT) { + OBJ_RELEASE(Z_OBJ(EX(call)->This)); } + ZVAL_UNDEF(param); + EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; + Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); + + FREE_OP1(); + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { if (Z_ISREF_P(arg) && !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { diff --cc Zend/zend_vm_execute.h index f0ef140f78,174c6de1c1..45328dc3ec --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@@ -15917,31 -15358,27 +15917,26 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS arg = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1); param = ZEND_CALL_VAR(EX(call), opline->result.var); - if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { - if (UNEXPECTED(!Z_ISREF_P(arg))) { - if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { + if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) { + zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given", + opline->op2.num, + EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "", + EX(call)->func->common.scope ? "::" : "", + ZSTR_VAL(EX(call)->func->common.function_name)); - zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given", - opline->op2.num, - EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "", - EX(call)->func->common.scope ? "::" : "", - ZSTR_VAL(EX(call)->func->common.function_name)); - - if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) { - OBJ_RELEASE((zend_object*)EX(call)->func->common.prototype); - } - if (Z_TYPE(EX(call)->This) == IS_OBJECT) { - OBJ_RELEASE(Z_OBJ(EX(call)->This)); - } - ZVAL_UNDEF(param); - EX(call)->func = (zend_function*)&zend_pass_function; - Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); - - zval_ptr_dtor_nogc(free_op1); - ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); - } + if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE((zend_object*)EX(call)->func->common.prototype); } - if (Z_OBJ(EX(call)->This)) { ++ if (Z_TYPE(EX(call)->This) == IS_OBJECT) { + OBJ_RELEASE(Z_OBJ(EX(call)->This)); + } + ZVAL_UNDEF(param); + EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; + Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); + + zval_ptr_dtor_nogc(free_op1); + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { if (Z_ISREF_P(arg) && !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { @@@ -34896,30 -28975,26 +34891,25 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS arg = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var); param = ZEND_CALL_VAR(EX(call), opline->result.var); - if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { - if (UNEXPECTED(!Z_ISREF_P(arg))) { - if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { - - zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given", - opline->op2.num, - EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "", - EX(call)->func->common.scope ? "::" : "", - ZSTR_VAL(EX(call)->func->common.function_name)); + if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) { + zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given", + opline->op2.num, + EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "", + EX(call)->func->common.scope ? "::" : "", + ZSTR_VAL(EX(call)->func->common.function_name)); - if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) { - OBJ_RELEASE((zend_object*)EX(call)->func->common.prototype); - } - if (Z_TYPE(EX(call)->This) == IS_OBJECT) { - OBJ_RELEASE(Z_OBJ(EX(call)->This)); - } - ZVAL_UNDEF(param); - EX(call)->func = (zend_function*)&zend_pass_function; - Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); - - ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); - } + if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) { + OBJ_RELEASE((zend_object*)EX(call)->func->common.prototype); } - if (Z_OBJ(EX(call)->This)) { ++ if (Z_TYPE(EX(call)->This) == IS_OBJECT) { + OBJ_RELEASE(Z_OBJ(EX(call)->This)); + } + ZVAL_UNDEF(param); + EX(call)->func = (zend_function*)&zend_pass_function; - EX(call)->called_scope = NULL; + Z_OBJ(EX(call)->This) = NULL; - ZEND_SET_CALL_INFO(EX(call), ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); ++ ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS); + + ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); } else { if (Z_ISREF_P(arg) && !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {