Must free the pgParameterStatus chain in freePGconn(). My fault,

well spotted by Neil Conway.
This commit is contained in:
Tom Lane 2003-10-18 05:02:06 +00:00
parent 0a4048646b
commit f2f7107024
1 changed files with 12 additions and 1 deletions

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.262 2003/10/02 19:52:44 tgl Exp $ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.263 2003/10/18 05:02:06 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -2003,8 +2003,11 @@ makeEmptyPGconn(void)
static void static void
freePGconn(PGconn *conn) freePGconn(PGconn *conn)
{ {
pgParameterStatus *pstatus;
if (!conn) if (!conn)
return; return;
pqClearAsyncResult(conn); /* deallocate result and curTuple */ pqClearAsyncResult(conn); /* deallocate result and curTuple */
if (conn->sock >= 0) if (conn->sock >= 0)
{ {
@ -2037,6 +2040,14 @@ freePGconn(PGconn *conn)
if (conn->notifyList) if (conn->notifyList)
DLFreeList(conn->notifyList); DLFreeList(conn->notifyList);
freeaddrinfo_all(conn->addrlist_family, conn->addrlist); freeaddrinfo_all(conn->addrlist_family, conn->addrlist);
pstatus = conn->pstatus;
while (pstatus != NULL)
{
pgParameterStatus *prev = pstatus;
pstatus = pstatus->next;
free(prev);
}
if (conn->lobjfuncs) if (conn->lobjfuncs)
free(conn->lobjfuncs); free(conn->lobjfuncs);
if (conn->inBuffer) if (conn->inBuffer)