cvs: ZendEngine2(PHP_5_1) / zend_compile.c zend_execute_API.c php-src NEWS
| From: | Dmitry Stogov | Date: | Thu, 24 Nov 2005 11:33:11 +0000 |
| Subject: | cvs: ZendEngine2(PHP_5_1) / zend_compile.c zend_execute_API.c php-src NEWS | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-4389@lists.php.net to get a copy of this message | ||
dmitry Thu Nov 24 06:33:11 2005 EDT
Modified files: (Branch: PHP_5_1)
/php-src NEWS
/ZendEngine2 zend_compile.c zend_execute_API.c
Log:
Fixed bug #35360 (exceptions in interactive mode (php -a) may cause crash)
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.2027.2.219&r2=1.2027.2.220&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.219 php-src/NEWS:1.2027.2.220
--- php-src/NEWS:1.2027.2.219 Thu Nov 24 00:07:25 2005
+++ php-src/NEWS Thu Nov 24 06:33:10 2005
@@ -4,6 +4,9 @@
- Added an additional field $frame['object'] to the result array of
debug_backtrace() that contains a reference to the respective object when the
frame was called from an object. (Sebastian)
+- Fixed bug #35360 (exceptions in interactive mode (php -a) may cause crash).
+ (Dmitry)
+
24 Nov 2005, PHP 5.1
- Added support for class constants and static members for internal classes.
(Dmitry, Michael Wallner)
http://cvs.php.net/diff.php/ZendEngine2/zend_compile.c?r1=1.647.2.16&r2=1.647.2.17&ty=u
Index: ZendEngine2/zend_compile.c
diff -u ZendEngine2/zend_compile.c:1.647.2.16 ZendEngine2/zend_compile.c:1.647.2.17
--- ZendEngine2/zend_compile.c:1.647.2.16 Wed Nov 23 04:26:43 2005
+++ ZendEngine2/zend_compile.c Thu Nov 24 06:33:11 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_compile.c,v 1.647.2.16 2005/11/23 09:26:43 dmitry Exp $ */
+/* $Id: zend_compile.c,v 1.647.2.17 2005/11/24 11:33:11 dmitry Exp $ */
#include <zend_language_parser.h>
#include "zend.h"
@@ -1730,12 +1730,14 @@
} else {
CG(active_op_array)->opcodes[last_additional_catch->u.opline_num].op1.u.EA.type = 1;
}
+ DEC_BPC(CG(active_op_array));
}
void zend_do_try(znode *try_token TSRMLS_DC)
{
try_token->u.opline_num = zend_add_try_element(get_next_op_number(CG(active_op_array))
TSRMLS_CC);
+ INC_BPC(CG(active_op_array));
}
http://cvs.php.net/diff.php/ZendEngine2/zend_execute_API.c?r1=1.331.2.4&r2=1.331.2.5&ty=u
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.331.2.4 ZendEngine2/zend_execute_API.c:1.331.2.5
--- ZendEngine2/zend_execute_API.c:1.331.2.4 Thu Oct 27 15:25:48 2005
+++ ZendEngine2/zend_execute_API.c Thu Nov 24 06:33:11 2005
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute_API.c,v 1.331.2.4 2005/10/27 19:25:48 dmitry Exp $ */
+/* $Id: zend_execute_API.c,v 1.331.2.5 2005/11/24 11:33:11 dmitry Exp $ */
#include <stdio.h>
#include <signal.h>
@@ -1115,6 +1115,8 @@
INIT_ZVAL(ret_opline->op1.u.constant);
SET_UNUSED(ret_opline->op2);
+ zend_do_handle_exception(TSRMLS_C);
+
if (!CG(active_op_array)->start_op) {
CG(active_op_array)->start_op = CG(active_op_array)->opcodes;
}
@@ -1153,7 +1155,11 @@
zval_ptr_dtor(&local_retval);
}
- CG(active_op_array)->last--; /* get rid of that ZEND_RETURN */
+ if (EG(exception)) {
+ zend_exception_error(EG(exception) TSRMLS_CC);
+ }
+
+ CG(active_op_array)->last -= 2; /* get rid of that ZEND_RETURN and ZEND_HANDLE_EXCEPTION */
CG(active_op_array)->start_op = CG(active_op_array)->opcodes+CG(active_op_array)->last;
}