From: Felipe Pena Date: Sat, 8 Mar 2008 22:03:21 +0000 (+0000) Subject: MFB: User error handlers no longer catch supressed errors (patch by Etienne Kneuss) X-Git-Tag: RELEASE_2_0_0a1~206 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3a3ebace1cca271b9bd94edf47bffe5d99481e90;p=php MFB: User error handlers no longer catch supressed errors (patch by Etienne Kneuss) --- diff --git a/Zend/zend.c b/Zend/zend.c index fbeafe1a90..f4ef903e7c 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -1513,7 +1513,8 @@ ZEND_API void zend_error(int type, const char *format, ...) /* {{{ */ /* if we don't have a user defined error handler */ if (!EG(user_error_handler) - || !(EG(user_error_handler_error_reporting) & type)) { + || !(EG(user_error_handler_error_reporting) & type) + || EG(error_handling) != EH_NORMAL) { zend_error_cb(type, error_filename, error_lineno, format, args); } else switch (type) { case E_ERROR: diff --git a/Zend/zend.h b/Zend/zend.h index a9318a054d..ea79ea9966 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -768,6 +768,12 @@ END_EXTERN_C() #include "zend_operators.h" #include "zend_variables.h" +typedef enum { + EH_NORMAL = 0, + EH_SUPPRESS, + EH_THROW +} zend_error_handling_t; + #define ZEND_U_EQUAL(type, ustr, ulen, str, slen) \ ((type == IS_STRING)? \ (!memcmp((ustr).s,(str),(slen))): \ diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 559277064b..45e6f52966 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -212,11 +212,15 @@ struct _zend_executor_globals { int user_error_handler_error_reporting; zval *user_error_handler; + zval *user_error_handler_old; zval *user_exception_handler; zend_stack user_error_handlers_error_reporting; zend_ptr_stack user_error_handlers; zend_ptr_stack user_exception_handlers; + zend_error_handling_t error_handling; + zend_class_entry *exception_class; + /* timeout support */ int timeout_seconds;