summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2007-11-21 12:28:13 +0000
committerDmitry Stogov <dmitry@php.net>2007-11-21 12:28:13 +0000
commite0ae3d22c1e8bd3ba12d4c1b40b6942a7cba5317 (patch)
treeca5a91e64df08605e3778791b4ddd57cb1863636 /Zend/zend_execute.c
parent685e5d064a4b6efd65e9c71ad989ac65a33da7c5 (diff)
downloadphp-git-e0ae3d22c1e8bd3ba12d4c1b40b6942a7cba5317.tar.gz
Safe exit from executor()
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 8f1e0f0e46..797fbe8446 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1426,7 +1426,7 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
EX(opline)++; \
}
-#define ZEND_VM_RETURN_FROM_EXECUTE_LOOP() \
+#define ZEND_VM_EXIT_FROM_EXECUTE_LOOP() \
free_alloca(EX(CVs)); \
if (EX(op_array)->T < TEMP_VAR_STACK_LIMIT) { \
free_alloca(EX(Ts)); \
@@ -1435,7 +1435,10 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
} \
EG(in_execution) = EX(original_in_execution); \
EG(current_execute_data) = EX(prev_execute_data); \
- EG(opline_ptr) = NULL; \
+ EG(opline_ptr) = NULL;
+
+#define ZEND_VM_RETURN_FROM_EXECUTE_LOOP() \
+ ZEND_VM_EXIT_FROM_EXECUTE_LOOP() \
ZEND_VM_RETURN()
#include "zend_vm_execute.h"