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 2018/01/05 12:32:31 UTC
[2/3] commons-compress git commit: COMPRESS-380 allow underlying
stream to outlive HuffmanDecoder
COMPRESS-380 allow underlying stream to outlive HuffmanDecoder
Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/aed74ea0
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/aed74ea0
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/aed74ea0
Branch: refs/heads/COMPRESS-380
Commit: aed74ea03276362cd301a36787774843ebd4f70c
Parents: 5d0b71f
Author: Stefan Bodewig <bo...@apache.org>
Authored: Fri Jan 5 13:29:40 2018 +0100
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Fri Jan 5 13:29:40 2018 +0100
----------------------------------------------------------------------
.../deflate64/Deflate64CompressorInputStream.java | 12 +++++++++++-
.../compress/compressors/deflate64/HuffmanDecoder.java | 3 +--
2 files changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/aed74ea0/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
index 88b2142..369fa8d 100644
--- a/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/deflate64/Deflate64CompressorInputStream.java
@@ -29,6 +29,7 @@ import static org.apache.commons.compress.utils.IOUtils.closeQuietly;
* @since 1.16
*/
public class Deflate64CompressorInputStream extends CompressorInputStream {
+ private InputStream originalStream;
private HuffmanDecoder decoder;
/**
@@ -38,6 +39,7 @@ public class Deflate64CompressorInputStream extends CompressorInputStream {
*/
public Deflate64CompressorInputStream(InputStream in) {
this(new HuffmanDecoder(in));
+ originalStream = in;
}
Deflate64CompressorInputStream(HuffmanDecoder decoder) {
@@ -75,7 +77,7 @@ public class Deflate64CompressorInputStream extends CompressorInputStream {
read = decoder.decode(b, off, len);
count(read);
if (read == -1) {
- close();
+ closeDecoder();
}
}
return read;
@@ -88,6 +90,14 @@ public class Deflate64CompressorInputStream extends CompressorInputStream {
@Override
public void close() throws IOException {
+ closeDecoder();
+ if (originalStream != null) {
+ originalStream.close();
+ originalStream = null;
+ }
+ }
+
+ private void closeDecoder() throws IOException {
closeQuietly(decoder);
decoder = null;
}
http://git-wip-us.apache.org/repos/asf/commons-compress/blob/aed74ea0/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java b/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
index 04ec7f9..f74c7de 100644
--- a/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
+++ b/src/main/java/org/apache/commons/compress/compressors/deflate64/HuffmanDecoder.java
@@ -27,7 +27,6 @@ import java.nio.ByteOrder;
import java.util.Arrays;
import static org.apache.commons.compress.compressors.deflate64.HuffmanState.*;
-import static org.apache.commons.compress.utils.IOUtils.closeQuietly;
class HuffmanDecoder implements Closeable {
/**
@@ -119,7 +118,7 @@ class HuffmanDecoder implements Closeable {
@Override
public void close() {
- closeQuietly(reader);
+ state = new InitialState();
reader = null;
}