Commit c1c7b338 authored by Tom Lane's avatar Tom Lane

Reconsider context for calling callback functions --- original idea

that they aren't part of error processing is clearly faulty.
parent 0b96badc
......@@ -37,7 +37,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.115 2003/07/27 21:49:54 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.116 2003/08/03 23:44:44 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -318,12 +318,19 @@ errfinish(int dummy, ...)
MemoryContext oldcontext;
ErrorContextCallback *econtext;
recursion_depth++;
CHECK_STACK_DEPTH();
/*
* Call any context callback functions. We can treat ereports occuring
* in callback functions as re-entrant rather than recursive case, so
* don't increment recursion_depth yet.
* Do processing in ErrorContext, which we hope has enough reserved space
* to report an error.
*/
oldcontext = MemoryContextSwitchTo(ErrorContext);
/*
* Call any context callback functions. Errors occurring in callback
* functions will be treated as recursive errors --- this ensures we
* will avoid infinite recursion (see errstart).
*/
for (econtext = error_context_stack;
econtext != NULL;
......@@ -332,15 +339,6 @@ errfinish(int dummy, ...)
(*econtext->callback) (econtext->arg);
}
/* Now we are ready to process the error. */
recursion_depth++;
/*
* Do processing in ErrorContext, which we hope has enough reserved space
* to report an error.
*/
oldcontext = MemoryContextSwitchTo(ErrorContext);
/* Send to server log, if enabled */
if (edata->output_to_server)
send_message_to_server_log(edata);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment