dmitry Wed Nov 21 12:28:30 2007 UTC
Modified files:
/ZendEngine2 zend_execute.c zend_vm_def.h zend_vm_execute.h
Log:
Safe exit from executor()
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute.c?r1=1.773&r2=1.774&diff_format=u
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.773 ZendEngine2/zend_execute.c:1.774
--- ZendEngine2/zend_execute.c:1.773 Tue Nov 20 11:01:48 2007
+++ ZendEngine2/zend_execute.c Wed Nov 21 12:28:30 2007
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.773 2007/11/20 11:01:48 dmitry Exp $ */
+/* $Id: zend_execute.c,v 1.774 2007/11/21 12:28:30 dmitry Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -1446,7 +1446,7 @@
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)); \
@@ -1455,7 +1455,10 @@
} \
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"
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_def.h?r1=1.199&r2=1.200&diff_format=u
Index: ZendEngine2/zend_vm_def.h
diff -u ZendEngine2/zend_vm_def.h:1.199 ZendEngine2/zend_vm_def.h:1.200
--- ZendEngine2/zend_vm_def.h:1.199 Tue Nov 20 19:12:01 2007
+++ ZendEngine2/zend_vm_def.h Wed Nov 21 12:28:30 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_vm_def.h,v 1.199 2007/11/20 19:12:01 dmitry Exp $ */
+/* $Id: zend_vm_def.h,v 1.200 2007/11/21 12:28:30 dmitry Exp $ */
/* If you change this file, please regenerate the zend_vm_execute.h and
* zend_vm_opcodes.h files by running:
@@ -3885,6 +3885,7 @@
FREE_OP1();
}
#endif
+ ZEND_VM_EXIT_FROM_EXECUTE_LOOP();
zend_bailout();
ZEND_VM_NEXT_OPCODE();
}
@@ -4159,7 +4160,7 @@
case ZEND_USER_OPCODE_CONTINUE:
ZEND_VM_CONTINUE();
case ZEND_USER_OPCODE_RETURN:
- ZEND_VM_RETURN();
+ ZEND_VM_RETURN_FROM_EXECUTE_LOOP();
case ZEND_USER_OPCODE_DISPATCH:
ZEND_VM_DISPATCH(EX(opline)->opcode, EX(opline));
default:
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_execute.h?r1=1.203&r2=1.204&diff_format=u
Index: ZendEngine2/zend_vm_execute.h
diff -u ZendEngine2/zend_vm_execute.h:1.203 ZendEngine2/zend_vm_execute.h:1.204
--- ZendEngine2/zend_vm_execute.h:1.203 Tue Nov 20 19:12:01 2007
+++ ZendEngine2/zend_vm_execute.h Wed Nov 21 12:28:30 2007
@@ -615,7 +615,7 @@
case ZEND_USER_OPCODE_CONTINUE:
ZEND_VM_CONTINUE();
case ZEND_USER_OPCODE_RETURN:
- ZEND_VM_RETURN();
+ ZEND_VM_RETURN_FROM_EXECUTE_LOOP();
case ZEND_USER_OPCODE_DISPATCH:
ZEND_VM_DISPATCH(EX(opline)->opcode, EX(opline));
default:
@@ -2194,6 +2194,7 @@
}
#endif
+ ZEND_VM_EXIT_FROM_EXECUTE_LOOP();
zend_bailout();
ZEND_VM_NEXT_OPCODE();
}
@@ -5402,6 +5403,7 @@
zval_dtor(free_op1.var);
}
#endif
+ ZEND_VM_EXIT_FROM_EXECUTE_LOOP();
zend_bailout();
ZEND_VM_NEXT_OPCODE();
}
@@ -8854,6 +8856,7 @@
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
}
#endif
+ ZEND_VM_EXIT_FROM_EXECUTE_LOOP();
zend_bailout();
ZEND_VM_NEXT_OPCODE();
}
@@ -16467,6 +16470,7 @@
}
#endif
+ ZEND_VM_EXIT_FROM_EXECUTE_LOOP();
zend_bailout();
ZEND_VM_NEXT_OPCODE();
}
@@ -22219,6 +22223,7 @@
}
#endif
+ ZEND_VM_EXIT_FROM_EXECUTE_LOOP();
zend_bailout();
ZEND_VM_NEXT_OPCODE();
}
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
|