From f2f71070244958108a9321f47524d3a40945c682 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 18 Oct 2003 05:02:06 +0000
Subject: [PATCH] Must free the pgParameterStatus chain in freePGconn().  My
 fault, well spotted by Neil Conway.

---
 src/interfaces/libpq/fe-connect.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index cd235a12768..9dde3043c70 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -8,7 +8,7 @@
  *
  *
  * 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
 freePGconn(PGconn *conn)
 {
+	pgParameterStatus *pstatus;
+
 	if (!conn)
 		return;
+
 	pqClearAsyncResult(conn);	/* deallocate result and curTuple */
 	if (conn->sock >= 0)
 	{
@@ -2037,6 +2040,14 @@ freePGconn(PGconn *conn)
 	if (conn->notifyList)
 		DLFreeList(conn->notifyList);
 	freeaddrinfo_all(conn->addrlist_family, conn->addrlist);
+	pstatus = conn->pstatus;
+	while (pstatus != NULL)
+	{
+		pgParameterStatus *prev = pstatus;
+
+		pstatus = pstatus->next;
+		free(prev);
+	}
 	if (conn->lobjfuncs)
 		free(conn->lobjfuncs);
 	if (conn->inBuffer)
-- 
GitLab