summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-10-31 19:25:14 +0000
committerDmitry Stogov <dmitry@php.net>2005-10-31 19:25:14 +0000
commit681405fc4a9cfc76d7a2312e286f038c28fb267a (patch)
treebef631c1266651839ca3e01f5bec41fdb36af80e /Zend/zend_execute.c
parent24a80c3ebf283cca9edece0f971469f3a9726803 (diff)
downloadphp-git-681405fc4a9cfc76d7a2312e286f038c28fb267a.tar.gz
Fixed bug #35017 (Exception thrown in error handler may cause unexpected behavior)
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 401a344b0a..bbe056457a 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1371,6 +1371,11 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
CHECK_SYMBOL_TABLES() \
EX(opline) = new_op
+#define ZEND_VM_JMP(new_op) \
+ CHECK_SYMBOL_TABLES() \
+ EX(opline) = EG(exception)?EX(opline)+1:new_op; \
+ ZEND_VM_CONTINUE()
+
#define ZEND_VM_INC_OPCODE() \
if (!EG(exception)) { \
CHECK_SYMBOL_TABLES() \
@@ -1388,9 +1393,6 @@ ZEND_API void execute_internal(zend_execute_data *execute_data_ptr, int return_v
EG(current_execute_data) = EX(prev_execute_data); \
ZEND_VM_RETURN()
-#define ZEND_VM_CONTINUE_JMP() \
- ZEND_VM_CONTINUE()
-
#include "zend_vm_execute.h"
ZEND_API int zend_set_user_opcode_handler(zend_uchar opcode, opcode_handler_t handler)