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();
+ }
}
}