summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-05-18 12:44:40 +0300
committerDmitry Stogov <dmitry@zend.com>2015-05-18 12:44:40 +0300
commitcee88571d9dbb2d56b78b312919aea190580d9e5 (patch)
treef099f674ec91b148e5e068efef2cc21d38b9fb8c
parent104f6c5ec60c6adcaad2e4a087527cde9bd983d5 (diff)
downloadphp-git-cee88571d9dbb2d56b78b312919aea190580d9e5.tar.gz
Fixed bug #69649 (segfault with --enable-dtrace)
-rw-r--r--Zend/zend_vm_def.h2
-rw-r--r--Zend/zend_vm_execute.h5
-rw-r--r--Zend/zend_vm_execute.skl1
3 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index c8626f185b..5d6b128cb3 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -2490,7 +2490,6 @@ ZEND_VM_HELPER(zend_leave_helper, ANY, ANY)
}
EG(current_execute_data) = EX(prev_execute_data);
}
- zend_vm_stack_free_call_frame_ex(call_info, execute_data);
ZEND_VM_RETURN();
}
@@ -5514,6 +5513,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMPVAR|CV, ANY)
} else {
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
zend_execute_ex(call);
+ zend_vm_stack_free_call_frame(call);
}
destroy_op_array(new_op_array);
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 5ee528e759..e98f9dbf15 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -432,6 +432,7 @@ ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value)
EX(prev_execute_data) = EG(current_execute_data);
i_init_execute_data(execute_data, op_array, return_value);
zend_execute_ex(execute_data);
+ zend_vm_stack_free_call_frame(execute_data);
}
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
@@ -529,7 +530,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_
}
EG(current_execute_data) = EX(prev_execute_data);
}
- zend_vm_stack_free_call_frame_ex(call_info, execute_data);
ZEND_VM_RETURN();
}
@@ -3855,6 +3855,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HAN
} else {
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
zend_execute_ex(call);
+ zend_vm_stack_free_call_frame(call);
}
destroy_op_array(new_op_array);
@@ -29437,6 +29438,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLE
} else {
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
zend_execute_ex(call);
+ zend_vm_stack_free_call_frame(call);
}
destroy_op_array(new_op_array);
@@ -40927,6 +40929,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HA
} else {
ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
zend_execute_ex(call);
+ zend_vm_stack_free_call_frame(call);
}
destroy_op_array(new_op_array);
diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
index 02fe6bdc36..7e223385ff 100644
--- a/Zend/zend_vm_execute.skl
+++ b/Zend/zend_vm_execute.skl
@@ -38,6 +38,7 @@ ZEND_API void zend_{%EXECUTOR_NAME%}(zend_op_array *op_array, zval *return_value
EX(prev_execute_data) = EG(current_execute_data);
i_init_execute_data(execute_data, op_array, return_value);
zend_{%EXECUTOR_NAME%}_ex(execute_data);
+ zend_vm_stack_free_call_frame(execute_data);
}
{%EXTERNAL_EXECUTOR%}