Hi all,

After a run of valgrind on pg_rewind, I found a couple of code paths
missing some PQclear calls after running a query. Attached is a patch
to fix all those leaks.
Regards,
-- 
Michael
diff --git a/src/bin/pg_rewind/libpq_fetch.c b/src/bin/pg_rewind/libpq_fetch.c
index 1979fbc..c670fe2 100644
--- a/src/bin/pg_rewind/libpq_fetch.c
+++ b/src/bin/pg_rewind/libpq_fetch.c
@@ -352,6 +352,8 @@ libpqGetFile(const char *filename, size_t *filesize)
 
 	pg_log(PG_DEBUG, "fetched file \"%s\", length %d\n", filename, len);
 
+	PQclear(res);
+
 	if (filesize)
 		*filesize = len;
 	return result;
@@ -410,6 +412,7 @@ libpq_executeFileMap(filemap_t *map)
 	if (PQresultStatus(res) != PGRES_COMMAND_OK)
 		pg_fatal("could not create temporary table: %s",
 				 PQresultErrorMessage(res));
+	PQclear(res);
 
 	sql = "COPY fetchchunks FROM STDIN";
 	res = PQexec(conn, sql);
@@ -455,6 +458,8 @@ libpq_executeFileMap(filemap_t *map)
 		}
 	}
 
+	PQclear(res);
+
 	if (PQputCopyEnd(conn, NULL) != 1)
 		pg_fatal("could not send end-of-COPY: %s",
 				 PQerrorMessage(conn));
@@ -464,6 +469,7 @@ libpq_executeFileMap(filemap_t *map)
 		if (PQresultStatus(res) != PGRES_COMMAND_OK)
 			pg_fatal("unexpected result while sending file list: %s",
 					 PQresultErrorMessage(res));
+		PQclear(res);
 	}
 
 	/*
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to