From 2fd028ebb88c5791dd0a1ce31acb0d70cfe5b904 Mon Sep 17 00:00:00 2001 From: twosee Date: Tue, 25 Aug 2020 19:54:13 +0800 Subject: [PATCH] Improve error_handing replacement functions --- Zend/zend.h | 1 - Zend/zend_API.c | 15 +++------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/Zend/zend.h b/Zend/zend.h index 5963ca7d9a7ac..ae2cfc5969370 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -344,7 +344,6 @@ typedef enum { typedef struct { zend_error_handling_t handling; zend_class_entry *exception; - zval user_handler; } zend_error_handling; ZEND_API void zend_save_error_handling(zend_error_handling *current); diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 92879137723bb..a1d6be11df2f7 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -4242,7 +4242,6 @@ ZEND_API void zend_save_error_handling(zend_error_handling *current) /* {{{ */ { current->handling = EG(error_handling); current->exception = EG(exception_class); - ZVAL_COPY(¤t->user_handler, &EG(user_error_handler)); } /* }}} */ @@ -4250,25 +4249,17 @@ ZEND_API void zend_replace_error_handling(zend_error_handling_t error_handling, { if (current) { zend_save_error_handling(current); - if (error_handling != EH_NORMAL && Z_TYPE(EG(user_error_handler)) != IS_UNDEF) { - zval_ptr_dtor(&EG(user_error_handler)); - ZVAL_UNDEF(&EG(user_error_handler)); - } } + ZEND_ASSERT(error_handling == EH_THROW || exception_class == NULL); EG(error_handling) = error_handling; - EG(exception_class) = error_handling == EH_THROW ? exception_class : NULL; + EG(exception_class) = exception_class; } /* }}} */ ZEND_API void zend_restore_error_handling(zend_error_handling *saved) /* {{{ */ { EG(error_handling) = saved->handling; - EG(exception_class) = saved->handling == EH_THROW ? saved->exception : NULL; - if (Z_TYPE(saved->user_handler) != IS_UNDEF) { - zval_ptr_dtor(&EG(user_error_handler)); - ZVAL_COPY_VALUE(&EG(user_error_handler), &saved->user_handler); - ZVAL_UNDEF(&saved->user_handler); - } + EG(exception_class) = saved->exception; } /* }}} */