From 7292fd8f1c781278021407276474d9188845113d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 26 Jan 2021 13:58:18 -0500 Subject: [PATCH] Suppress compiler warnings from commit ee895a655. For obscure reasons, some buildfarm members are now generating complaints about plpgsql_call_handler's "retval" variable possibly being used uninitialized. It seems no less safe than it was before that commit, but these complaints are (mostly?) new. I trust that initializing the variable where it's declared will be enough to shut that up. I also notice that some compilers are warning about setjmp clobber of the same variable, which is maybe a bit more defensible. Mark it volatile to silence that. Also, rearrange the logic to give procedure_resowner a single point of initialization, in hopes of silencing some setjmp-clobber warnings about that. (Marking it volatile would serve too, but its sibling variables are depending on single assignment, so let's stick with that method.) Discussion: https://postgr.es/m/E1l4F1z-0000cN-Lx@gemulon.postgresql.org --- src/pl/plpgsql/src/pl_handler.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c index 97f4264c28..00aace2f39 100644 --- a/src/pl/plpgsql/src/pl_handler.c +++ b/src/pl/plpgsql/src/pl_handler.c @@ -224,8 +224,8 @@ plpgsql_call_handler(PG_FUNCTION_ARGS) bool nonatomic; PLpgSQL_function *func; PLpgSQL_execstate *save_cur_estate; - ResourceOwner procedure_resowner = NULL; - Datum retval; + ResourceOwner procedure_resowner; + volatile Datum retval = (Datum) 0; int rc; nonatomic = fcinfo->context && @@ -254,9 +254,9 @@ plpgsql_call_handler(PG_FUNCTION_ARGS) * Therefore, be very wary of adding any code between here and the PG_TRY * block. */ - if (nonatomic && func->requires_procedure_resowner) - procedure_resowner = - ResourceOwnerCreate(NULL, "PL/pgSQL procedure resources"); + procedure_resowner = + (nonatomic && func->requires_procedure_resowner) ? + ResourceOwnerCreate(NULL, "PL/pgSQL procedure resources") : NULL; PG_TRY(); { @@ -271,7 +271,7 @@ plpgsql_call_handler(PG_FUNCTION_ARGS) { plpgsql_exec_event_trigger(func, (EventTriggerData *) fcinfo->context); - retval = (Datum) 0; + /* there's no return value in this case */ } else retval = plpgsql_exec_function(func, fcinfo,