From: Nikita Popov Date: Wed, 4 Sep 2019 10:46:34 +0000 (+0200) Subject: Merge branch 'PHP-7.4' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b02f425b6cf788a1b0952dcd929dad26566a8c35;p=php Merge branch 'PHP-7.4' --- b02f425b6cf788a1b0952dcd929dad26566a8c35 diff --cc Zend/zend_vm_def.h index 4eb0dc80b2,1dec6a0a3f..b58130c6d5 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@@ -4235,8 -4203,25 +4228,9 @@@ ZEND_VM_C_LABEL(fcall_except) if (!RETURN_VALUE_USED(opline)) { i_zval_ptr_dtor(ret); } - - } else { /* ZEND_OVERLOADED_FUNCTION */ - zval retval; - - ret = RETURN_VALUE_USED(opline) ? EX_VAR(opline->result.var) : &retval; - - call->prev_execute_data = execute_data; - - if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) { - UNDEF_RESULT(); - HANDLE_EXCEPTION(); - } - - if (!RETURN_VALUE_USED(opline)) { - zval_ptr_dtor(ret); - } } + ZEND_VM_C_LABEL(fcall_end): if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) { OBJ_RELEASE(Z_OBJ(call->This)); } diff --cc Zend/zend_vm_execute.h index f65bba6c67,3af0f5a0ef..2585277ab2 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@@ -1647,8 -1617,25 +1640,9 @@@ fcall_except if (!0) { i_zval_ptr_dtor(ret); } - - } else { /* ZEND_OVERLOADED_FUNCTION */ - zval retval; - - ret = 0 ? EX_VAR(opline->result.var) : &retval; - - call->prev_execute_data = execute_data; - - if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) { - UNDEF_RESULT(); - HANDLE_EXCEPTION(); - } - - if (!0) { - zval_ptr_dtor(ret); - } } + fcall_end: if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) { OBJ_RELEASE(Z_OBJ(call->This)); } @@@ -1746,8 -1731,25 +1743,9 @@@ fcall_except if (!1) { i_zval_ptr_dtor(ret); } - - } else { /* ZEND_OVERLOADED_FUNCTION */ - zval retval; - - ret = 1 ? EX_VAR(opline->result.var) : &retval; - - call->prev_execute_data = execute_data; - - if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) { - UNDEF_RESULT(); - HANDLE_EXCEPTION(); - } - - if (!1) { - zval_ptr_dtor(ret); - } } + fcall_end: if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) { OBJ_RELEASE(Z_OBJ(call->This)); }