Fix for libpgtcl from Constantin Teodorescu.
authorBruce Momjian
Thu, 25 Sep 1997 15:48:51 +0000 (15:48 +0000)
committerBruce Momjian
Thu, 25 Sep 1997 15:48:51 +0000 (15:48 +0000)
src/interfaces/libpgtcl/pgtclCmds.c

index c26b3ebdc351b0a379a9c2897cc4ae545a50e512..f747869ebd3171ab8668d7418f27d8d04d5007bc 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.15 1997/09/08 02:40:15 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.16 1997/09/25 15:48:51 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1339,9 +1339,11 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
 
        if ((r = Tcl_Eval(interp, argv[4])) != TCL_OK && r != TCL_CONTINUE)
        {
-           if (r == TCL_BREAK)
+           if (r == TCL_BREAK) {
+               /* I suppose that memory used by info and result must be released */
+               free(info); PQclear(result);Tcl_UnsetVar(interp, argv[3], 0);
                return TCL_OK;
-
+           }
            if (r == TCL_ERROR)
            {
                char        msg[60];
@@ -1350,12 +1352,15 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
                        interp->errorLine);
                Tcl_AddErrorInfo(interp, msg);
            }
-
+           /* also, releasing memory used by info and result */
+           free(info); PQclear(result);Tcl_UnsetVar(interp, argv[3], 0);
            return r;
        }
    }
 
    free(info);
+   /* Release memory used by result */
+   PQclear(result);
    Tcl_UnsetVar(interp, argv[3], 0);
    Tcl_AppendResult(interp, "", 0);
    return TCL_OK;