diff options
| author | Dmitry Stogov <dmitry@php.net> | 2009-03-26 10:56:45 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2009-03-26 10:56:45 +0000 |
| commit | da9405de72b067b4709733083aed29c358117aae (patch) | |
| tree | fbf15d2da359940b134d5a12472cfc995c8a6751 /Zend/zend.c | |
| parent | ab7f6d88e004b6b5fbc40cdcc174b1c13924b10c (diff) | |
| download | php-git-da9405de72b067b4709733083aed29c358117aae.tar.gz | |
Fixed bug #47714 (autoloading classes inside exception_handler leads to crashes)
Diffstat (limited to 'Zend/zend.c')
| -rw-r--r-- | Zend/zend.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index 44f2c4a9cb..4efcae6615 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -1192,20 +1192,20 @@ ZEND_API int zend_execute_scripts(int type TSRMLS_DC, zval **retval, int file_co zval *orig_user_exception_handler; zval **params[1], *retval2, *old_exception; old_exception = EG(exception); - zend_exception_save(TSRMLS_C); + EG(exception) = NULL; params[0] = &old_exception; orig_user_exception_handler = EG(user_exception_handler); if (call_user_function_ex(CG(function_table), NULL, orig_user_exception_handler, &retval2, 1, params, 1, NULL TSRMLS_CC) == SUCCESS) { if (retval2 != NULL) { zval_ptr_dtor(&retval2); } - zend_exception_restore(TSRMLS_C); if (EG(exception)) { zval_ptr_dtor(&EG(exception)); EG(exception) = NULL; } + zval_ptr_dtor(&old_exception); } else { - zend_exception_restore(TSRMLS_C); + EG(exception) = old_exception; zend_exception_error(EG(exception), E_ERROR TSRMLS_CC); } } else { |
