From: Dmitry Stogov Date: Thu, 17 Dec 2015 11:16:19 +0000 (+0300) Subject: Fixed incorrect exception handling X-Git-Tag: php-7.0.2RC1~11^2~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9e44b6a61e7ca116c3ea6de4080276ef9a650d06;p=php Fixed incorrect exception handling --- diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 4c01a5d1af..0e555f5f83 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2383,7 +2383,7 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY) if (UNEXPECTED(EG(exception) != NULL)) { const zend_op *old_opline = EX(opline); zend_throw_exception_internal(NULL); - if (RETURN_VALUE_USED(old_opline)) { + if (old_opline->opcode != ZEND_HANDLE_EXCEPTION && RETURN_VALUE_USED(old_opline)) { zval_ptr_dtor(EX_VAR(old_opline->result.var)); } HANDLE_EXCEPTION_LEAVE(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 0fd696d327..8ef0c4dbbf 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -501,7 +501,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_ if (UNEXPECTED(EG(exception) != NULL)) { const zend_op *old_opline = EX(opline); zend_throw_exception_internal(NULL); - if (RETURN_VALUE_USED(old_opline)) { + if (old_opline->opcode != ZEND_HANDLE_EXCEPTION && RETURN_VALUE_USED(old_opline)) { zval_ptr_dtor(EX_VAR(old_opline->result.var)); } HANDLE_EXCEPTION_LEAVE();