]> granicus.if.org Git - postgresql/commitdiff
From: darcy@druid.net (D'Arcy J.M. Cain)
authorMarc G. Fournier <scrappy@hub.org>
Sat, 11 Jan 1997 14:24:40 +0000 (14:24 +0000)
committerMarc G. Fournier <scrappy@hub.org>
Sat, 11 Jan 1997 14:24:40 +0000 (14:24 +0000)
Fix for libpgtcl:

I forgot to clear out the variable created and the memory used.

src/interfaces/libpgtcl/pgtclCmds.c

index 1b1356627d39a2a964ce21847962eb4db257161b..2c7b9182eb4bd551418e95e6dda5eddaaf3638f9 100644 (file)
@@ -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;
 }