From 9287567effc81d3892c2a9889dbf99982c6cce58 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 18 Apr 2010 19:16:06 +0000 Subject: [PATCH] Fix bogus order of cleanup steps in plperl_inline_handler. Per Alex Hunsaker --- src/pl/plperl/plperl.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index c622b64408..9ad2d40d11 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -1,7 +1,7 @@ /********************************************************************** * plperl.c - perl as a procedural language for PostgreSQL * - * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.173 2010/03/18 19:02:46 petere Exp $ + * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.174 2010/04/18 19:16:06 tgl Exp $ * **********************************************************************/ @@ -1153,19 +1153,20 @@ plperl_inline_handler(PG_FUNCTION_ARGS) } PG_CATCH(); { - current_call_data = save_call_data; - restore_context(oldcontext); if (desc.reference) SvREFCNT_dec(desc.reference); + current_call_data = save_call_data; + restore_context(oldcontext); PG_RE_THROW(); } PG_END_TRY(); - current_call_data = save_call_data; - restore_context(oldcontext); if (desc.reference) SvREFCNT_dec(desc.reference); + current_call_data = save_call_data; + restore_context(oldcontext); + error_context_stack = pl_error_context.previous; PG_RETURN_VOID();