diff --git a/contrib/vacuumlo/vacuumlo.c b/contrib/vacuumlo/vacuumlo.c
index 43130dca8afcf181a990dd1bdfe260896c2d3fa8..ca0d3048b82a201290f83c19113931e0a5765248 100644
--- a/contrib/vacuumlo/vacuumlo.c
+++ b/contrib/vacuumlo/vacuumlo.c
@@ -240,6 +240,12 @@ vacuumlo(const char *database, const struct _param * param)
 			fprintf(stderr, "Out of memory\n");
 			PQclear(res);
 			PQfinish(conn);
+			if (schema != NULL)
+				PQfreemem(schema);
+			if (schema != NULL)
+				PQfreemem(table);
+			if (schema != NULL)
+				PQfreemem(field);
 			return -1;
 		}
 
@@ -256,6 +262,9 @@ vacuumlo(const char *database, const struct _param * param)
 			PQclear(res2);
 			PQclear(res);
 			PQfinish(conn);
+			PQfreemem(schema);
+			PQfreemem(table);
+			PQfreemem(field);
 			return -1;
 		}
 		PQclear(res2);