Fix another memory leak in pg_select --- pointed out by teo@flex.ro

This commit is contained in:
Tom Lane 1998-10-14 15:17:51 +00:00
parent aa3a1f46df
commit acc9c38471
1 changed files with 9 additions and 9 deletions

View File

@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.37 1998/10/02 01:37:17 tgl Exp $ * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.38 1998/10/14 15:17:51 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -1230,7 +1230,8 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
Pg_ConnectionId *connid; Pg_ConnectionId *connid;
PGconn *conn; PGconn *conn;
PGresult *result; PGresult *result;
int r; int r,
retval;
size_t tupno, size_t tupno,
column, column,
ncols; ncols;
@ -1293,6 +1294,8 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
sprintf(buffer, "%d", ncols); sprintf(buffer, "%d", ncols);
Tcl_SetVar2(interp, argv[3], ".numcols", buffer, 0); Tcl_SetVar2(interp, argv[3], ".numcols", buffer, 0);
retval = TCL_OK;
for (tupno = 0; tupno < PQntuples(result); tupno++) for (tupno = 0; tupno < PQntuples(result); tupno++)
{ {
sprintf(buffer, "%d", tupno); sprintf(buffer, "%d", tupno);
@ -1306,10 +1309,7 @@ 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_Eval(interp, argv[4])) != TCL_OK && r != TCL_CONTINUE)
{ {
if (r == TCL_BREAK) if (r == TCL_BREAK)
{ break; /* exit loop, but return TCL_OK */
PQclear(result);
return TCL_OK;
}
if (r == TCL_ERROR) if (r == TCL_ERROR)
{ {
@ -1320,15 +1320,15 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
Tcl_AddErrorInfo(interp, msg); Tcl_AddErrorInfo(interp, msg);
} }
PQclear(result); retval = r;
return r; break;
} }
} }
ckfree((void *) info); ckfree((void *) info);
Tcl_UnsetVar(interp, argv[3], 0); Tcl_UnsetVar(interp, argv[3], 0);
PQclear(result); PQclear(result);
return TCL_OK; return retval;
} }
/* /*