]> granicus.if.org Git - php/commitdiff
Fixed bug #69649 (segfault with --enable-dtrace)
authorDmitry Stogov <dmitry@zend.com>
Mon, 18 May 2015 09:44:40 +0000 (12:44 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 18 May 2015 09:44:40 +0000 (12:44 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_execute.skl

index c8626f185bedd13b0061094f9a7c2787c351da9f..5d6b128cb318be217bbb5afab7fc657bef5be3dd 100644 (file)
@@ -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);
index 5ee528e75914046886fd3d5432f9b179eff87c80..e98f9dbf1591b4b8a7a5e6ec1e6c492055a78084 100644 (file)
@@ -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);
index 02fe6bdc36081f3ec383214136c7330d7b522c0f..7e223385ff212b907b301f8911051265a8a35637 100644 (file)
@@ -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%}