diff --git a/src/main/java/azgracompress/cache/QuantizationCacheManager.java b/src/main/java/azgracompress/cache/QuantizationCacheManager.java index 02c083aba7a21a2bf23a130a30282d326114e8cb..0224eb7b1af40cbd8d97599c28d1fcbd77248a40 100644 --- a/src/main/java/azgracompress/cache/QuantizationCacheManager.java +++ b/src/main/java/azgracompress/cache/QuantizationCacheManager.java @@ -349,17 +349,32 @@ public class QuantizationCacheManager { * @return Cache file or null, if exception occurs. */ private static ICacheFile readCacheFileImpl(final InputStream inputStream) { - try (final DataInputStream dis = new DataInputStream(inputStream)) { - final CacheFileHeader header = new CacheFileHeader(); + final DataInputStream dis; + if (inputStream instanceof DataInputStream) { + dis = (DataInputStream) inputStream; + } else { + dis = new DataInputStream(inputStream); + } + + final CacheFileHeader header = new CacheFileHeader(); + try { header.readFromStream(dis); + } catch (final IOException e) { + System.err.println("Failed to read CacheFileHeader from input stream"); + e.printStackTrace(); + return null; + } - final ICacheFile cacheFile = getCacheFile(header.getQuantizationType()); - assert (cacheFile != null); + final ICacheFile cacheFile = getCacheFile(header.getQuantizationType()); + assert (cacheFile != null); + try { cacheFile.readFromStream(dis, header); - return cacheFile; } catch (final IOException e) { + System.err.println("Failed to read cache file from input stream."); + e.printStackTrace(); return null; } + return cacheFile; } /**