summaryrefslogtreecommitdiff
path: root/Zend/zend.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend.c')
-rw-r--r--Zend/zend.c6
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 {