From: [email protected] (D'Arcy J.M. Cain)
authorMarc G. Fournier
Sat, 11 Jan 1997 14:24:40 +0000 (14:24 +0000)
committerMarc G. Fournier
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;
 }