From 578883f1a8b2cda9c00f8d9ad42ca968073e405f Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Tue, 7 Jun 2011 08:43:29 +0900 Subject: [PATCH] Fixes issue 17. Applied 0xFF mask when returning int representation of byte data. --- .../org/xerial/snappy/SnappyInputStream.java | 2 +- .../java/org/xerial/snappy/CalgaryTest.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/xerial/snappy/SnappyInputStream.java b/src/main/java/org/xerial/snappy/SnappyInputStream.java index baca10a..30e482c 100755 --- a/src/main/java/org/xerial/snappy/SnappyInputStream.java +++ b/src/main/java/org/xerial/snappy/SnappyInputStream.java @@ -176,7 +176,7 @@ public class SnappyInputStream extends InputStream @Override public int read() throws IOException { if (uncompressedCursor < uncompressedLimit) { - return uncompressed[uncompressedCursor++]; + return uncompressed[uncompressedCursor++] & 0xFF; } else { if (hasNextChunk()) diff --git a/src/test/java/org/xerial/snappy/CalgaryTest.java b/src/test/java/org/xerial/snappy/CalgaryTest.java index 4457a2e..1f98af2 100755 --- a/src/test/java/org/xerial/snappy/CalgaryTest.java +++ b/src/test/java/org/xerial/snappy/CalgaryTest.java @@ -91,4 +91,28 @@ public class CalgaryTest } } + @Test + public void byteWiseRead() throws Exception { + for (String f : files) { + byte[] orig = readFile("testdata/calgary/" + f); + + ByteArrayOutputStream compressedBuf = new ByteArrayOutputStream(); + SnappyOutputStream out = new SnappyOutputStream(compressedBuf); + out.write(orig); + out.close(); + + SnappyInputStream in = new SnappyInputStream(new ByteArrayInputStream(compressedBuf.toByteArray())); + byte[] uncompressed = new byte[orig.length]; + int cursor = 0; + for (;;) { + int b = in.read(); + if (b == -1) + break; + uncompressed[cursor++] = (byte) b; + } + assertEquals(orig.length, cursor); + assertArrayEquals(orig, uncompressed); + } + } + }