mirror of https://github.com/postgres/postgres
Reconsider context for calling callback functions --- original idea
that they aren't part of error processing is clearly faulty.
This commit is contained in:
parent
0b96badc9c
commit
c1c7b338ee
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue