aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pl/tcl/pltcl.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c
index 8f9804696e5..d6b72f7d686 100644
--- a/src/pl/tcl/pltcl.c
+++ b/src/pl/tcl/pltcl.c
@@ -2233,9 +2233,9 @@ pltcl_SPI_execute_plan(ClientData cdata, Tcl_Interp *interp,
int j;
Tcl_HashEntry *hashent;
pltcl_query_desc *qdesc;
- const char *volatile nulls = NULL;
- CONST84 char *volatile arrayname = NULL;
- CONST84 char *volatile loop_body = NULL;
+ const char *nulls = NULL;
+ CONST84 char *arrayname = NULL;
+ CONST84 char *loop_body = NULL;
int count = 0;
int callnargs;
CONST84 char **callargs = NULL;
@@ -2365,6 +2365,8 @@ pltcl_SPI_execute_plan(ClientData cdata, Tcl_Interp *interp,
if (i != argc)
{
Tcl_SetResult(interp, usage, TCL_STATIC);
+ if (callargs)
+ ckfree((char *) callargs);
return TCL_ERROR;
}
@@ -2403,10 +2405,6 @@ pltcl_SPI_execute_plan(ClientData cdata, Tcl_Interp *interp,
}
}
- if (callargs)
- ckfree((char *) callargs);
- callargs = NULL;
-
/************************************************************
* Execute the plan
************************************************************/
@@ -2433,6 +2431,9 @@ pltcl_SPI_execute_plan(ClientData cdata, Tcl_Interp *interp,
}
PG_END_TRY();
+ if (callargs)
+ ckfree((char *) callargs);
+
return my_rc;
}