diff --git a/src/main/java/org/xerial/snappy/Snappy.java b/src/main/java/org/xerial/snappy/Snappy.java index f6be1ee..84ccd03 100755 --- a/src/main/java/org/xerial/snappy/Snappy.java +++ b/src/main/java/org/xerial/snappy/Snappy.java @@ -38,10 +38,10 @@ public class Snappy int uLen = uncompressed.remaining(); int compressedSize = SnappyNative.rawCompress(uncompressed, uPos, uLen, compressed, compressed.position()); - // pos limit - // [ ....XXXXXX.........] - uncompressed.limit(uncompressed.capacity()); - uncompressed.position(uPos + uLen); + // // pos limit + // // [ ....XXXXXX.........] + // uncompressed.limit(uncompressed.capacity()); + // uncompressed.position(uPos + uLen); // pos limit // [ ......BBBBBBB.........] @@ -69,8 +69,8 @@ public class Snappy boolean ret = SnappyNative.rawDecompress(compressed, cPos, cLen, decompressed, decompressed.position()); - compressed.limit(compressed.capacity()); - compressed.position(cPos + cLen); + // compressed.limit(compressed.capacity()); + // compressed.position(cPos + cLen); return ret; } diff --git a/src/main/java/org/xerial/snappy/SnappyNative.cpp b/src/main/java/org/xerial/snappy/SnappyNative.cpp index bf5810e..446b00d 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.cpp +++ b/src/main/java/org/xerial/snappy/SnappyNative.cpp @@ -62,11 +62,8 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_maxCompressedLength JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_getUncompressedLength (JNIEnv * env, jclass self, jobject compressed, jint cpos, jint clen) { - char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed); - if(compressedBuffer == 0) - return (jint) -1; - compressedBuffer += cpos; - + char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed) + cpos; + size_t result; snappy::GetUncompressedLength(compressedBuffer, (size_t) clen, &result); return (jint) result; } diff --git a/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll b/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll index a32e9c4..bfa71c6 100755 Binary files a/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll and b/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll differ diff --git a/src/test/java/org/xerial/snappy/SnappyTest.java b/src/test/java/org/xerial/snappy/SnappyTest.java index 74a7ec9..b0d2f8e 100755 --- a/src/test/java/org/xerial/snappy/SnappyTest.java +++ b/src/test/java/org/xerial/snappy/SnappyTest.java @@ -55,11 +55,19 @@ public class SnappyTest int maxCompressedLen = Snappy.getMaxCompressedLength(src.remaining()); _logger.info("max compressed length:" + maxCompressedLen); - int uncompressedLen = Snappy.getUncompressedLength(src); + ByteBuffer compressed = ByteBuffer.allocateDirect(1024); + int compressedSize = Snappy.compress(src, compressed); + _logger.info("compressed size: " + compressedSize); + + int uncompressedLen = Snappy.getUncompressedLength(compressed); _logger.info("uncompressed length: " + uncompressedLen); + ByteBuffer extract = ByteBuffer.allocateDirect(1024); + Snappy.decompress(compressed, extract); + extract.limit(uncompressedLen); - ByteBuffer dest = ByteBuffer.allocateDirect(1024); - Snappy.compress(src, dest); - + byte[] b = new byte[uncompressedLen]; + extract.get(b); + String decompressed = new String(b); + _logger.info(decompressed); } }