summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_def.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_vm_def.h')
-rw-r--r--Zend/zend_vm_def.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index db9f4eb4d4..ce5d520aa2 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -2364,8 +2364,9 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
ZEND_VM_LEAVE();
} else if (ZEND_CALL_KIND_EX(call_info) == ZEND_CALL_NESTED_CODE) {
zend_detach_symbol_table(execute_data);
- destroy_op_array(&EX(func)->op_array);
- efree_size(EX(func), sizeof(zend_op_array));
+ if (EXPECTED(destroy_op_array(&EX(func)->op_array) != 0)) {
+ efree_size(EX(func), sizeof(zend_op_array));
+ }
old_execute_data = execute_data;
execute_data = EG(current_execute_data) = EX(prev_execute_data);
zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
@@ -5439,7 +5440,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMPVAR|CV, ANY)
}
call->prev_execute_data = execute_data;
- i_init_code_execute_data(call, new_op_array, return_value);
+ i_init_code_execute_data(call, new_op_array, return_value);
if (EXPECTED(zend_execute_ex == execute_ex)) {
ZEND_VM_ENTER();
} else {
@@ -5448,8 +5449,9 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMPVAR|CV, ANY)
zend_vm_stack_free_call_frame(call);
}
- destroy_op_array(new_op_array);
- efree_size(new_op_array, sizeof(zend_op_array));
+ if (EXPECTED(destroy_op_array(new_op_array) != 0)) {
+ efree_size(new_op_array, sizeof(zend_op_array));
+ }
if (UNEXPECTED(EG(exception) != NULL)) {
zend_throw_exception_internal(NULL);
HANDLE_EXCEPTION();