summaryrefslogtreecommitdiff
path: root/Zend/zend.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend.c')
-rw-r--r--Zend/zend.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/Zend/zend.c b/Zend/zend.c
index 8d6cd7148f..fe507d7154 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -842,7 +842,7 @@ void zend_set_utility_values(zend_utility_values *utility_values) /* {{{ */
/* this should be compatible with the standard zenderror */
void zenderror(const char *error) /* {{{ */
{
- zend_error(E_PARSE, "%s", error);
+ zend_throw_exception(zend_get_parse_exception(), error, E_PARSE);
}
/* }}} */
@@ -1016,6 +1016,21 @@ static void zend_error_va_list(int type, const char *format, va_list args)
zend_stack context_stack;
zend_array *symbol_table;
+ if (type & E_EXCEPTION) {
+ char *message = NULL;
+
+#if !defined(HAVE_NORETURN) || defined(HAVE_NORETURN_ALIAS)
+ va_start(args, format);
+#endif
+ zend_vspprintf(&message, 0, format, args);
+ zend_throw_exception(zend_get_engine_exception(), message, type & ~E_EXCEPTION);
+ efree(message);
+#if !defined(HAVE_NORETURN) || defined(HAVE_NORETURN_ALIAS)
+ va_end(args);
+#endif
+ return;
+ }
+
/* Report about uncaught exception in case of fatal errors */
if (EG(exception)) {
zend_execute_data *ex;