Fix bogus order of cleanup steps in plperl_inline_handler.

Per Alex Hunsaker
This commit is contained in:
Tom Lane 2010-04-18 19:16:06 +00:00
parent d38603bd97
commit 9287567eff

View File

@ -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();