You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2016/03/17 11:04:54 UTC

commons-compress git commit: plug a few more native memory leaks

Repository: commons-compress
Updated Branches:
  refs/heads/master 6e9acfa66 -> f9334473b


plug a few more native memory leaks

aftermaths of COMPRESS-343, inspired by #11


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/f9334473
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/f9334473
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/f9334473

Branch: refs/heads/master
Commit: f9334473bd9993f38458ecee137ba9e7f7b79abb
Parents: 6e9acfa
Author: Stefan Bodewig <bo...@apache.org>
Authored: Thu Mar 17 11:04:08 2016 +0100
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Thu Mar 17 11:04:08 2016 +0100

----------------------------------------------------------------------
 .../compress/archivers/dump/TapeInputStream.java        |  6 +++---
 .../compress/archivers/zip/ZipArchiveInputStream.java   |  7 +++++--
 .../apache/commons/compress/archivers/zip/ZipFile.java  |  7 +++++--
 .../deflate/DeflateCompressorInputStream.java           | 10 ++++++++--
 .../deflate/DeflateCompressorOutputStream.java          | 12 +++++++++---
 5 files changed, 30 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f9334473/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java b/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java
index 7564823..3534805 100644
--- a/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java
@@ -294,18 +294,18 @@ class TapeInputStream extends FilterInputStream {
                         0x03)) {
                     case ZLIB:
 
+                        Inflater inflator = new Inflater();
                         try {
-                            Inflater inflator = new Inflater();
                             inflator.setInput(compBuffer, 0, compBuffer.length);
                             length = inflator.inflate(blockBuffer);
 
                             if (length != blockSize) {
                                 throw new ShortFileException();
                             }
-
-                            inflator.end();
                         } catch (DataFormatException e) {
                             throw new DumpArchiveException("bad data", e);
+                        } finally {
+                            inflator.end();
                         }
 
                         break;

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f9334473/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
index 2f7894a..584aa4a 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
@@ -519,8 +519,11 @@ public class ZipArchiveInputStream extends ArchiveInputStream {
     public void close() throws IOException {
         if (!closed) {
             closed = true;
-            in.close();
-            inf.end();
+            try {
+                in.close();
+            } finally {
+                inf.end();
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f9334473/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
index 51fe771..31444d7 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
@@ -420,8 +420,11 @@ public class ZipFile implements Closeable {
                 return new InflaterInputStream(bis, inflater) {
                     @Override
                     public void close() throws IOException {
-                        super.close();
-                        inflater.end();
+                        try {
+                            super.close();
+                        } finally {
+                            inflater.end();
+                        }
                     }
                 };
             case BZIP2:

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f9334473/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java
index d4fec63..f7b8dd0 100644
--- a/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorInputStream.java
@@ -37,6 +37,7 @@ public class DeflateCompressorInputStream extends CompressorInputStream {
     private static final int MAGIC_2d = 0xda;
     
     private final InputStream in;
+    private final Inflater inflater;
 
     /**
      * Creates a new input stream that decompresses Deflate-compressed data
@@ -58,7 +59,8 @@ public class DeflateCompressorInputStream extends CompressorInputStream {
      */
     public DeflateCompressorInputStream(InputStream inputStream,
                                         DeflateParameters parameters) {
-        in = new InflaterInputStream(inputStream, new Inflater(!parameters.withZlibHeader()));
+        inflater = new Inflater(!parameters.withZlibHeader());
+        in = new InflaterInputStream(inputStream, inflater);
     }
     
     /** {@inheritDoc} */
@@ -92,7 +94,11 @@ public class DeflateCompressorInputStream extends CompressorInputStream {
     /** {@inheritDoc} */
     @Override
     public void close() throws IOException {
-        in.close();
+        try {
+            in.close();
+        } finally {
+            inflater.end();
+        }
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/f9334473/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorOutputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorOutputStream.java b/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorOutputStream.java
index 3714fe4..e978a57 100644
--- a/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorOutputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/deflate/DeflateCompressorOutputStream.java
@@ -31,7 +31,8 @@ import org.apache.commons.compress.compressors.CompressorOutputStream;
  */
 public class DeflateCompressorOutputStream extends CompressorOutputStream {
     private final DeflaterOutputStream out;
-   
+    private final Deflater deflater;
+
     /**
      * Creates a Deflate compressed output stream with the default parameters.
      * @param outputStream the stream to wrap
@@ -49,7 +50,8 @@ public class DeflateCompressorOutputStream extends CompressorOutputStream {
      */
     public DeflateCompressorOutputStream(OutputStream outputStream,
                                          DeflateParameters parameters) throws IOException {
-        this.out = new DeflaterOutputStream(outputStream, new Deflater(parameters.getCompressionLevel(), !parameters.withZlibHeader()));
+        this.deflater = new Deflater(parameters.getCompressionLevel(), !parameters.withZlibHeader());
+        this.out = new DeflaterOutputStream(outputStream, deflater);
     }
 
     @Override
@@ -83,6 +85,10 @@ public class DeflateCompressorOutputStream extends CompressorOutputStream {
 
     @Override
     public void close() throws IOException {
-        out.close();
+        try {
+            out.close();
+        } finally {
+            deflater.end();
+        }
     }
 }