From: Xinchen Hui Date: Wed, 11 Mar 2015 05:42:39 +0000 (+0800) Subject: Fixed memleak X-Git-Tag: PRE_PHP7_NSAPI_REMOVAL~707 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=37901aa46754b2871efda98167f24c4f84fd2f2d;p=php Fixed memleak --- diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index b6d7442dba..5994380a7e 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -3241,6 +3241,14 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY) EG(current_execute_data) = call->prev_execute_data; } else { zend_error(E_EXCEPTION | E_ERROR, "Cannot call overloaded function for non-object"); + zend_vm_stack_free_args(call); + + zend_vm_stack_free_call_frame(call); + + if (fbc->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY) { + zend_string_release(fbc->common.function_name); + } + efree(fbc); HANDLE_EXCEPTION(); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 6180048915..c3bf80d2bb 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -807,6 +807,14 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) EG(current_execute_data) = call->prev_execute_data; } else { zend_error(E_EXCEPTION | E_ERROR, "Cannot call overloaded function for non-object"); + zend_vm_stack_free_args(call); + + zend_vm_stack_free_call_frame(call); + + if (fbc->type == ZEND_OVERLOADED_FUNCTION_TEMPORARY) { + zend_string_release(fbc->common.function_name); + } + efree(fbc); HANDLE_EXCEPTION(); }