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/09 17:41:08 UTC

[15/28] 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/master
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;
     }