From 8738e47d03db3555376f2da37f1e0604052a46de Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Sat, 11 Jan 1997 14:24:40 +0000 Subject: [PATCH] From: darcy@druid.net (D'Arcy J.M. Cain) Fix for libpgtcl: I forgot to clear out the variable created and the memory used. --- src/interfaces/libpgtcl/pgtclCmds.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/interfaces/libpgtcl/pgtclCmds.c b/src/interfaces/libpgtcl/pgtclCmds.c index 1b1356627d..2c7b9182eb 100644 --- a/src/interfaces/libpgtcl/pgtclCmds.c +++ b/src/interfaces/libpgtcl/pgtclCmds.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.9 1997/01/03 18:48:30 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.10 1997/01/11 14:24:40 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -1129,9 +1129,9 @@ Pg_select(ClientData cData, Tcl_Interp *interp, int argc, char **argv) int r; size_t tupno, column, ncols; Tcl_DString headers; + char buffer[2048]; struct { char *cname; - char *data; int change; } *info; @@ -1166,24 +1166,23 @@ Pg_select(ClientData cData, Tcl_Interp *interp, int argc, char **argv) for (column = 0; column < ncols; column++) { info[column].cname = PQfname(result, column); - info[column].data = malloc(2000); info[column].change = 0; Tcl_DStringAppendElement(&headers, info[column].cname); } Tcl_SetVar2(interp, argv[3], ".headers", Tcl_DStringValue(&headers), 0); - sprintf(info[0].data, "%d", ncols); - Tcl_SetVar2(interp, argv[3], ".numcols", info[0].data, 0); + sprintf(buffer, "%d", ncols); + Tcl_SetVar2(interp, argv[3], ".numcols", buffer, 0); for (tupno = 0; tupno < PQntuples(result); tupno++) { - sprintf(info[0].data, "%d", tupno); - Tcl_SetVar2(interp, argv[3], ".tupno", info[0].data, 0); + sprintf(buffer, "%d", tupno); + Tcl_SetVar2(interp, argv[3], ".tupno", buffer, 0); for (column = 0; column < ncols; column++) { - strcpy(info[column].data, PQgetvalue(result, tupno, column)); - Tcl_SetVar2(interp, argv[3], info[column].cname, info[column].data, 0); + strcpy(buffer, PQgetvalue(result, tupno, column)); + Tcl_SetVar2(interp, argv[3], info[column].cname, buffer, 0); } Tcl_SetVar2(interp, argv[3], ".command", "update", 0); @@ -1206,6 +1205,8 @@ Pg_select(ClientData cData, Tcl_Interp *interp, int argc, char **argv) } } + free(info); + Tcl_UnsetVar(interp, argv[3], 0); Tcl_AppendResult(interp, "", 0); return TCL_OK; } -- 2.40.0