From 9e44b6a61e7ca116c3ea6de4080276ef9a650d06 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 17 Dec 2015 14:16:19 +0300 Subject: [PATCH] Fixed incorrect exception handling --- Zend/zend_vm_def.h | 2 +- Zend/zend_vm_execute.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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(); -- 2.50.1