diff options
Diffstat (limited to 'Zend/zend_vm_def.h')
| -rw-r--r-- | Zend/zend_vm_def.h | 12 |
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(); |
