summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-12-17 14:16:19 +0300
committerDmitry Stogov <dmitry@zend.com>2015-12-17 14:16:19 +0300
commit9e44b6a61e7ca116c3ea6de4080276ef9a650d06 (patch)
tree543245d5918c4fec27e7d382e8e8a30b3ccf7a32
parent860ef0e2d7439214098430898fe15051ffc5e3a8 (diff)
downloadphp-git-9e44b6a61e7ca116c3ea6de4080276ef9a650d06.tar.gz
Fixed incorrect exception handling
-rw-r--r--Zend/zend_vm_def.h2
-rw-r--r--Zend/zend_vm_execute.h2
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();