Fix nested error handling in PG_FINALLY
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 7 Nov 2019 08:54:09 +0000 (09:54 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 7 Nov 2019 08:56:47 +0000 (09:56 +0100)
commit581a55889ba7f76dd87a270e37e5137f684bfdb7
treef8b853fa8a771bd2a962ed174662c6815f138a32
parenta0c96856e8b38a102daac76e3d385d9f8876744e
Fix nested error handling in PG_FINALLY

We need to pop the error stack before running the user-supplied
PG_FINALLY code.  Otherwise an error in the cleanup code would end up
at the same sigsetjmp() invocation and result in an infinite error
handling loop.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/95a822c3-728b-af0e-d7e5-71890507ae0c%402ndquadrant.com
src/backend/utils/adt/xml.c
src/include/utils/elog.h