]> granicus.if.org Git - postgresql/commitdiff
Fix nasty memory leak in pg_restore: _PrintData called inflateInit but
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 27 Nov 2001 23:48:12 +0000 (23:48 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 27 Nov 2001 23:48:12 +0000 (23:48 +0000)
never did inflateEnd, thus leaking some tens of KB per call.  Which
added up *real fast* when dealing with, say, thousands of BLOBs.
Thanks to Lane Rollins for the bug report.

src/bin/pg_dump/pg_backup_custom.c

index c6d9ff51236ef979a1b0cfe909a367c843500a9b..314e90d4df7fbf456fdfa5d829cdfd18bb5168f1 100644 (file)
@@ -19,7 +19,7 @@
  *
  *
  * IDENTIFICATION
- *             $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.16 2001/10/25 05:49:52 momjian Exp $
+ *             $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.17 2001/11/27 23:48:12 tgl Exp $
  *
  * Modifications - 28-Jun-2000 - pjw@rhyme.com.au
  *
@@ -622,6 +622,8 @@ _PrintData(ArchiveHandle *AH)
                        out[zlibOutSize - zp->avail_out] = '\0';
                        ahwrite(out, 1, zlibOutSize - zp->avail_out, AH);
                }
+               if (inflateEnd(zp) != Z_OK)
+                       die_horribly(AH, modulename, "could not close compression library: %s\n", zp->msg);
        }
 #endif