summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_vm_def.h8
-rw-r--r--Zend/zend_vm_execute.h22
2 files changed, 12 insertions, 18 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 6138ecb263..9c96328fc4 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -3729,12 +3729,8 @@ ZEND_VM_C_LABEL(try_function_name):
call = NULL;
}
- FREE_OP2();
- if (UNEXPECTED(!call)) {
- HANDLE_EXCEPTION();
- }
-
if (OP2_TYPE & (IS_VAR|IS_TMP_VAR)) {
+ FREE_OP2();
if (UNEXPECTED(EG(exception))) {
if (call) {
if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -3745,6 +3741,8 @@ ZEND_VM_C_LABEL(try_function_name):
}
HANDLE_EXCEPTION();
}
+ } else if (!call) {
+ HANDLE_EXCEPTION();
}
call->prev_execute_data = EX(call);
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index dbbacebe0d..af6dd7f090 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -3676,11 +3676,8 @@ try_function_name:
call = NULL;
}
- if (UNEXPECTED(!call)) {
- HANDLE_EXCEPTION();
- }
-
if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
+
if (UNEXPECTED(EG(exception))) {
if (call) {
if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -3691,6 +3688,8 @@ try_function_name:
}
HANDLE_EXCEPTION();
}
+ } else if (!call) {
+ HANDLE_EXCEPTION();
}
call->prev_execute_data = EX(call);
@@ -3843,12 +3842,8 @@ try_function_name:
call = NULL;
}
- zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
- if (UNEXPECTED(!call)) {
- HANDLE_EXCEPTION();
- }
-
if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
+ zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
if (UNEXPECTED(EG(exception))) {
if (call) {
if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -3859,6 +3854,8 @@ try_function_name:
}
HANDLE_EXCEPTION();
}
+ } else if (!call) {
+ HANDLE_EXCEPTION();
}
call->prev_execute_data = EX(call);
@@ -3989,11 +3986,8 @@ try_function_name:
call = NULL;
}
- if (UNEXPECTED(!call)) {
- HANDLE_EXCEPTION();
- }
-
if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
+
if (UNEXPECTED(EG(exception))) {
if (call) {
if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -4004,6 +3998,8 @@ try_function_name:
}
HANDLE_EXCEPTION();
}
+ } else if (!call) {
+ HANDLE_EXCEPTION();
}
call->prev_execute_data = EX(call);