Return-Path: X-Original-To: apmail-commons-commits-archive@minotaur.apache.org Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6B6F37754 for ; Wed, 17 Aug 2011 06:07:36 +0000 (UTC) Received: (qmail 45692 invoked by uid 500); 17 Aug 2011 06:07:30 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 45327 invoked by uid 500); 17 Aug 2011 06:07:18 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 45316 invoked by uid 99); 17 Aug 2011 06:07:10 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Aug 2011 06:07:10 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Aug 2011 06:07:04 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 0977323888E7 for ; Wed, 17 Aug 2011 06:06:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1158533 - in /commons/sandbox/runtime/trunk/src/main: java/org/apache/commons/runtime/ java/org/apache/commons/runtime/io/ java/org/apache/commons/runtime/util/ java/org/apache/commons/runtime/util/bzip2/ native/include/acr/ native/shared/ Date: Wed, 17 Aug 2011 06:06:43 -0000 To: commits@commons.apache.org From: mturk@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110817060644.0977323888E7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mturk Date: Wed Aug 17 06:06:42 2011 New Revision: 1158533 URL: http://svn.apache.org/viewvc?rev=1158533&view=rev Log: Do not use long for Pointer length Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Streamable.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Deflater.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Inflater.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Utils.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Deflater.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Impl.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Inflater.java commons/sandbox/runtime/trunk/src/main/native/include/acr/pointer.h commons/sandbox/runtime/trunk/src/main/native/shared/bzip2.c commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer.java Wed Aug 17 06:06:42 2011 @@ -99,7 +99,6 @@ public abstract class Pointer implements return PLENGTH; } - /** * Check if the pointer is valid * @return true if the internal pointer is not {@code NULL}. Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Streamable.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Streamable.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Streamable.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/io/Streamable.java Wed Aug 17 06:06:42 2011 @@ -27,7 +27,7 @@ public interface Streamable extends Devi { /** - * Test if this stream supports read operations. + * Test whether this stream supports read operations. * * @return {@code true} if the read operations are * supported, {@code false} otherwise. @@ -35,7 +35,7 @@ public interface Streamable extends Devi public boolean canRead(); /** - * Test if this stream supports write operations. + * Test whether this stream supports write operations. * * @return {@code true} if the write operations are * supported, {@code false} otherwise. @@ -43,7 +43,7 @@ public interface Streamable extends Devi public boolean canWrite(); /** - * Test if this stream supports seek operations. + * Test whether this stream supports seek operations. * * @return {@code true} if the seek operations are * supported, {@code false} otherwise. Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Deflater.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Deflater.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Deflater.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Deflater.java Wed Aug 17 06:06:42 2011 @@ -176,7 +176,7 @@ public abstract class Deflater implement * @param len the length of the input data * @throws InvalidArgumentException if the provided parameters are invalid */ - public abstract void setInput(Pointer b, long off, long len) + public abstract void setInput(Pointer b, long off, int len) throws InvalidArgumentException; /** @@ -190,9 +190,10 @@ public abstract class Deflater implement public void setInput(Pointer b) throws InvalidArgumentException { - if (b == null) - throw new NullPointerException(); - setInput(b, 0L, b.sizeof()); + int len = Utils.unsignedInteger(b.sizeof()); + if (len < 1) + throw new InvalidArgumentException(); + setInput(b, 0L, len); } /** @@ -223,6 +224,8 @@ public abstract class Deflater implement * @return the actual number of bytes of compressed data * @throws InvalidDataException if the provided data was invalid * @throws OutOfMemoryError if the memory allocation failed + * @throws NullPointerException if the inflater does not have internal + * buffer. */ public abstract int deflate() throws InvalidDataException, @@ -298,7 +301,7 @@ public abstract class Deflater implement * @throws InvalidDataException if the input data was invalid or corrupt. * @throws OutOfMemoryError if the memory allocation failed */ - public abstract long deflate(Pointer b, long off, long len) + public abstract int deflate(Pointer b, long off, int len) throws InvalidArgumentException, InvalidDataException, OutOfMemoryError; @@ -315,16 +318,17 @@ public abstract class Deflater implement * @throws InvalidDataException if the provided data was invalid * @throws OutOfMemoryError if the memory allocation failed */ - public long deflate(Pointer b) + public int deflate(Pointer b) throws InvalidArgumentException, InvalidDataException, OutOfMemoryError { if (b == null) throw new NullPointerException(); - if (b.sizeof() < 1) + int len = Utils.unsignedInteger(b.sizeof()); + if (len < 1) throw new InvalidArgumentException(); - return deflate(b, 0, b.sizeof()); + return deflate(b, 0, len); } } Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Inflater.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Inflater.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Inflater.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Inflater.java Wed Aug 17 06:06:42 2011 @@ -120,8 +120,6 @@ public abstract class Inflater implement public void setInput(byte[] b) throws InvalidArgumentException { - if (b == null) - throw new NullPointerException(); if (b.length < 1) throw new InvalidArgumentException(); setInput(b, 0, b.length); @@ -150,7 +148,7 @@ public abstract class Inflater implement * * @throws InvalidArgumentException if the provided parameters are invalid */ - public abstract void setInput(Pointer b, long off, long len) + public abstract void setInput(Pointer b, long off, int len) throws InvalidArgumentException; /** @@ -165,9 +163,10 @@ public abstract class Inflater implement public void setInput(Pointer b) throws InvalidArgumentException { - if (b == null) - throw new NullPointerException(); - setInput(b, 0L, b.sizeof()); + int len = Utils.unsignedInteger(b.sizeof()); + if (len < 1) + throw new InvalidArgumentException(); + setInput(b, 0L, len); } /** @@ -198,6 +197,8 @@ public abstract class Inflater implement * * @throws InvalidDataException if the provided data was invalid * @throws OutOfMemoryError if the memory allocation failed + * @throws NullPointerException if the inflater does not have internal + * buffer. */ public abstract int inflate() throws InvalidDataException, @@ -245,8 +246,6 @@ public abstract class Inflater implement InvalidDataException, OutOfMemoryError { - if (b == null) - throw new NullPointerException(); if (b.length < 1) throw new InvalidArgumentException(); return inflate(b, 0, b.length); @@ -289,7 +288,7 @@ public abstract class Inflater implement * @throws InvalidDataException if the input data was invalid or corrupt. * @throws OutOfMemoryError if the memory allocation failed */ - public abstract long inflate(Pointer b, long off, long len) + public abstract int inflate(Pointer b, long off, int len) throws InvalidArgumentException, InvalidDataException, OutOfMemoryError; @@ -309,16 +308,15 @@ public abstract class Inflater implement * @throws InvalidDataException if the provided data was invalid * @throws OutOfMemoryError if the memory allocation failed */ - public long inflate(Pointer b) + public int inflate(Pointer b) throws InvalidArgumentException, InvalidDataException, OutOfMemoryError { - if (b == null) - throw new NullPointerException(); - if (b.sizeof() < 1) + int len = Utils.unsignedInteger(b.sizeof()); + if (len < 1) throw new InvalidArgumentException(); - return inflate(b, 0, b.sizeof()); + return inflate(b, 0L, len); } } Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Utils.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Utils.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Utils.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/Utils.java Wed Aug 17 06:06:42 2011 @@ -401,5 +401,24 @@ public final class Utils return sa; } + /** + * Safely cast long to integer. + *

+ * If the {@code val} is larger then {@code Integer.MAX_VALUE} returned + * value is {@code Integer.MAX_VALUE}. + *

+ * + * @param val value to cast. + * @return integer in range {@code 0 to Integer.MAX_VALUE}. + */ + public static int unsignedInteger(long val) + { + if (val < 0L) + return 0; + else if (val > Integer.MAX_VALUE) + return Integer.MAX_VALUE; + else + return (int)val; + } } Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2.java Wed Aug 17 06:06:42 2011 @@ -25,6 +25,7 @@ import org.apache.commons.runtime.Operat import org.apache.commons.runtime.OverflowException; import org.apache.commons.runtime.Pointer; import org.apache.commons.runtime.util.StringManager; +import org.apache.commons.runtime.util.Utils; /** * Primitive array helper routines. @@ -107,31 +108,31 @@ public final class Bzip2 throws InvalidArgumentException, OverflowException; private static native int deflate1(ByteBuffer src, int spos, - ByteBuffer dst, int dpos, int dlen, - int len, int blockSize100k, - int workFactor) + ByteBuffer dst, int dpos, int dlen, + int len, int blockSize100k, + int workFactor) throws InvalidArgumentException, OverflowException; - private static native long deflate2(long src, long dst, long dlen, - long len, int blockSize100k, - int workFactor) + private static native int deflate2(long src, long dst, int dlen, + int len, int blockSize100k, + int workFactor) throws InvalidArgumentException, InvalidRangeException, OverflowException; private static native int inflate0(byte[] src, int spos, - byte[] dst, int dpos, int dlen, - int len, boolean small) + byte[] dst, int dpos, int dlen, + int len, boolean small) throws InvalidArgumentException, InvalidDataException, OverflowException; private static native int inflate1(ByteBuffer src, int spos, - ByteBuffer dst, int dpos, int dlen, - int len, boolean small) + ByteBuffer dst, int dpos, int dlen, + int len, boolean small) throws InvalidArgumentException, InvalidDataException, OverflowException; - private static native long inflate2(long src,long dst, long dlen, - long len, boolean small) + private static native int inflate2(long src,long dst, int dlen, + int len, boolean small) throws InvalidArgumentException, InvalidDataException, OverflowException; @@ -215,8 +216,8 @@ public final class Bzip2 { if (blockSize100k < 1 || blockSize100k > 9 || workFactor < 0 || workFactor > 250) throw new InvalidArgumentException(); - int dstLen = dst.limit() - dst.position(); - int length = src.limit() - src.position(); + int dstLen = dst.remaining(); + int length = src.remaining(); if (dstLen < 1 || length < 1) throw new ArrayIndexOutOfBoundsException(); int s = deflate1(src, src.position(), dst, dst.position(), @@ -254,7 +255,7 @@ public final class Bzip2 long srcPos, Pointer dst, long dstPos, - long length, + int length, int blockSize100k, int workFactor) throws InvalidArgumentException, @@ -265,10 +266,10 @@ public final class Bzip2 throw new InvalidArgumentException(); long srca = src.address() + srcPos; long dsta = dst.address() + dstPos; - long dlen = dst.sizeof() - dstPos; - if (dlen < 1L || srcPos < 0L || dstPos < 0L) + int dlen = Utils.unsignedInteger(dst.sizeof() - dstPos); + if (dlen < 1 || srcPos < 0L || dstPos < 0L) throw new IndexOutOfBoundsException(); - return deflate2(srca, dsta, dlen, length, blockSize100k, workFactor); + return deflate2(srca, dsta, (int)dlen, length, blockSize100k, workFactor); } /** @@ -343,8 +344,8 @@ public final class Bzip2 InvalidDataException, OverflowException { - int dstLen = dst.limit() - dst.position(); - int length = src.limit() - src.position(); + int dstLen = dst.remaining(); + int length = src.remaining(); if (dstLen < 1 || length < 1) throw new ArrayIndexOutOfBoundsException(); int p = inflate1(src, src.position(), dst, dst.position(), @@ -382,7 +383,7 @@ public final class Bzip2 long srcPos, Pointer dst, long dstPos, - long length, + int length, boolean small) throws InvalidArgumentException, InvalidDataException, @@ -390,8 +391,8 @@ public final class Bzip2 { long srca = src.address() + srcPos; long dsta = dst.address() + dstPos; - long dlen = dst.sizeof() - dstPos; - if (dlen < 1L || srcPos < 0L || dstPos < 0L) + int dlen = Utils.unsignedInteger(dst.sizeof() - dstPos); + if (dlen < 1 || srcPos < 0L || dstPos < 0L) throw new IndexOutOfBoundsException(); /* TODO: Check for param validity */ return inflate2(srca, dsta, dlen, length, small); Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Deflater.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Deflater.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Deflater.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Deflater.java Wed Aug 17 06:06:42 2011 @@ -37,6 +37,7 @@ public class Bzip2Deflater extends Defla { private long handle; + private int bufferSize; private static native int deflate0(long stream) throws InvalidDataException, @@ -47,7 +48,7 @@ public class Bzip2Deflater extends Defla private static native int deflate2(long stream, ByteBuffer buf, int off, int len) throws InvalidDataException, OutOfMemoryError; - private static native long deflate3(long stream, long buf, long len) + private static native int deflate3(long stream, long buf, int len) throws InvalidDataException, OutOfMemoryError; @@ -58,7 +59,7 @@ public class Bzip2Deflater extends Defla */ public Bzip2Deflater() { - this(9, 30); + this(9, Bzip2Impl.DEFAULT_WORK_FACTOR); } /** @@ -95,10 +96,13 @@ public class Bzip2Deflater extends Defla throw new InvalidArgumentException(); if (workFactor == 0) workFactor = Bzip2Impl.DEFAULT_WORK_FACTOR; - handle = Bzip2Impl.newStream(bufferSize); + handle = Bzip2Impl.newHandle(bufferSize); int rc = Bzip2Impl.compressInit(handle, blockSize100k, workFactor); - if (rc != 0) + if (rc != 0) { + close0(handle); throw new OutOfMemoryError(); + } + this.bufferSize = bufferSize; } @Override @@ -144,7 +148,7 @@ public class Bzip2Deflater extends Defla public synchronized void setInput(ByteBuffer b) throws InvalidArgumentException { - int len = b.limit() - b.position(); + int len = b.remaining(); if (len < 1) throw new InvalidArgumentException(); if (handle == 0L) @@ -153,10 +157,10 @@ public class Bzip2Deflater extends Defla } @Override - public synchronized void setInput(Pointer b, long off, long len) + public synchronized void setInput(Pointer b, long off, int len) throws InvalidArgumentException { - if (len < 1L) + if (len < 1) throw new InvalidArgumentException(); if (off < 0L || off + len > b.sizeof()) throw new IndexOutOfBoundsException(); @@ -206,6 +210,8 @@ public class Bzip2Deflater extends Defla throws InvalidDataException, OutOfMemoryError { + if (bufferSize == 0) + throw new NullPointerException(); if (handle == 0L) throw new IllegalStateException(); return deflate0(handle); @@ -228,26 +234,26 @@ public class Bzip2Deflater extends Defla InvalidDataException, OutOfMemoryError { + int len = b.remaining(); + if (len < 1) + throw new InvalidArgumentException(); if (handle == 0L) throw new IllegalStateException(); - int len = b.limit() - b.position(); return deflate2(handle, b, b.position(), len); } @Override - public long deflate(Pointer b, long off, long len) + public int deflate(Pointer b, long off, int len) throws InvalidArgumentException, InvalidDataException, OutOfMemoryError { - if (len < 1L) + if (len < 1) throw new InvalidArgumentException(); if (off < 0L || off + len > b.sizeof()) throw new IndexOutOfBoundsException(); if (handle == 0L) throw new IllegalStateException(); - if (handle == 0L) - throw new IllegalStateException(); return deflate3(handle, b.address() + off, len); } Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Impl.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Impl.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Impl.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Impl.java Wed Aug 17 06:06:42 2011 @@ -49,15 +49,15 @@ final class Bzip2Impl */ public static final byte BZ_FINISH = 2; - private static native int bzsize0(); - public static native long newStream(int bufferSize) + private static native int init0(); + public static native long newHandle(int bufferSize) throws OutOfMemoryError; public static native int compressInit(long handle, int blockSize100k, int workFactor); public static native int decompressInit(long handle, boolean small); public static native int setInput0(long handle, byte[] buf, int off, int len); public static native int setInput1(long handle, ByteBuffer buf, int off, int len); - public static native int setInput2(long handle, long buf, long len); + public static native int setInput2(long handle, long buf, int len); public static native void setInput3(long handle); public static native int getAvailIn(long handle); @@ -73,9 +73,8 @@ final class Bzip2Impl public static final int DEFAULT_WORK_FACTOR = 30; public static final int SIZEOF_BZ_STREAM; - static { - SIZEOF_BZ_STREAM = bzsize0(); + SIZEOF_BZ_STREAM = init0(); } private Bzip2Impl() Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Inflater.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Inflater.java?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Inflater.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/util/bzip2/Bzip2Inflater.java Wed Aug 17 06:06:42 2011 @@ -37,6 +37,7 @@ public final class Bzip2Inflater extends { private long handle; + private int bufferSize; private static native int inflate0(long stream) throws InvalidDataException, @@ -47,7 +48,7 @@ public final class Bzip2Inflater extends private static native int inflate2(long stream, ByteBuffer buf, int off, int len) throws InvalidDataException, OutOfMemoryError; - private static native long inflate3(long stream, long buf, long len) + private static native int inflate3(long stream, long buf, int len) throws InvalidDataException, OutOfMemoryError; @@ -85,8 +86,13 @@ public final class Bzip2Inflater extends { if (bufferSize < 0) throw new InvalidArgumentException(); - handle = Bzip2Impl.newStream(bufferSize); + handle = Bzip2Impl.newHandle(bufferSize); int rc = Bzip2Impl.decompressInit(handle, small); + if (rc != 0) { + close0(handle); + throw new OutOfMemoryError(); + } + this.bufferSize = bufferSize; } @Override @@ -126,17 +132,17 @@ public final class Bzip2Inflater extends public synchronized void setInput(ByteBuffer b) throws InvalidArgumentException { - int len = b.limit() - b.position(); + int len = b.remaining(); if (len < 1) throw new InvalidArgumentException(); Bzip2Impl.setInput1(handle, b, b.position(), len); } @Override - public synchronized void setInput(Pointer b, long off, long len) + public synchronized void setInput(Pointer b, long off, int len) throws InvalidArgumentException { - if (len < 1L) + if (len < 1) throw new InvalidArgumentException(); if (off < 0L || off + len > b.sizeof()) throw new IndexOutOfBoundsException(); @@ -160,6 +166,10 @@ public final class Bzip2Inflater extends throws InvalidDataException, OutOfMemoryError { + if (bufferSize == 0) + throw new NullPointerException(); + if (handle == 0L) + throw new IllegalStateException(); return inflate0(handle); } @@ -169,6 +179,8 @@ public final class Bzip2Inflater extends InvalidDataException, OutOfMemoryError { + if (handle == 0L) + throw new IllegalStateException(); return inflate1(handle, b, off, len); } @@ -178,26 +190,26 @@ public final class Bzip2Inflater extends InvalidDataException, OutOfMemoryError { + int len = b.remaining(); + if (len < 1) + throw new InvalidArgumentException(); if (handle == 0L) throw new IllegalStateException(); - int len = b.limit() - b.position(); return inflate2(handle, b, b.position(), len); } @Override - public long inflate(Pointer b, long off, long len) + public int inflate(Pointer b, long off, int len) throws InvalidArgumentException, InvalidDataException, OutOfMemoryError { - if (len < 1L) + if (len < 1) throw new InvalidArgumentException(); if (off < 0L || off + len > b.sizeof()) throw new IndexOutOfBoundsException(); if (handle == 0L) throw new IllegalStateException(); - if (handle == 0L) - throw new IllegalStateException(); return inflate3(handle, b.address() + off, len); } Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr/pointer.h URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr/pointer.h?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/native/include/acr/pointer.h (original) +++ commons/sandbox/runtime/trunk/src/main/native/include/acr/pointer.h Wed Aug 17 06:06:42 2011 @@ -51,6 +51,8 @@ int AcrSetPointer(JNI_STDARGS, void *val); int AcrSetPointerEx(JNI_STDARGS, void *val, size_t len); +int +AcrSetPointerSz(JNI_STDARGS, size_t len); #ifdef __cplusplus } Modified: commons/sandbox/runtime/trunk/src/main/native/shared/bzip2.c URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/bzip2.c?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/native/shared/bzip2.c (original) +++ commons/sandbox/runtime/trunk/src/main/native/shared/bzip2.c Wed Aug 17 06:06:42 2011 @@ -131,24 +131,20 @@ ACR_BZIP2_EXPORT(jint, Bzip2, deflate1)( return 0; } -ACR_BZIP2_EXPORT(jlong, Bzip2, deflate2)(JNI_STDARGS, jlong src, jlong dst, - jlong dlen, jlong len, jint blockSize100k, - jint workFactor) +ACR_BZIP2_EXPORT(jint, Bzip2, deflate2)(JNI_STDARGS, jlong src, jlong dst, + jint dlen, jint len, jint blockSize100k, + jint workFactor) { unsigned int dstLen; char *scp = J2P(src, char *); char *dcp = J2P(dst, char *); int rc; - if (dlen > UINT_MAX || len > UINT_MAX) { - ACR_THROW(ACR_EX_ERANGE, 0); - return 0; - } - dstLen = (unsigned int)dlen; + dstLen = dlen; rc = BZ2_bzBuffToBuffCompress(dcp, &dstLen, scp, (unsigned int)len, blockSize100k, 0, workFactor); if (rc == BZ_OK) - return (jlong)dstLen; + return dstLen; else if (rc == BZ_OUTBUFF_FULL) ACR_THROW(ACR_EX_EOVERFLOW, 0); else if (rc == BZ_MEM_ERROR) @@ -229,22 +225,16 @@ ACR_BZIP2_EXPORT(jint, Bzip2, inflate1)( } ACR_BZIP2_EXPORT(jlong, Bzip2, inflate2)(JNI_STDARGS, jlong src, - jlong dst, jlong dlen, - jlong len, jboolean small) + jlong dst, jint dlen, + jint len, jboolean small) { unsigned int dstLen; char *scp = J2P(src, char *); char *dcp = J2P(dst, char *); int rc; - if (dlen > UINT_MAX || len > UINT_MAX) { - ACR_THROW(ACR_EX_ERANGE, 0); - return 0; - } - dstLen = (unsigned int)dlen; - - rc = BZ2_bzBuffToBuffDecompress(dcp, &dstLen, scp, (unsigned int)len, - small, 0); + dstLen = dlen; + rc = BZ2_bzBuffToBuffDecompress(dcp, &dstLen, scp, len, small, 0); if (rc == BZ_OK) return (jlong)dstLen; else if (rc == BZ_OUTBUFF_FULL) @@ -258,14 +248,14 @@ ACR_BZIP2_EXPORT(jlong, Bzip2, inflate2) return 0; } -ACR_BZIP2_EXPORT(jint, Bzip2Impl, bzsize0)(JNI_STDARGS) +ACR_BZIP2_EXPORT(jint, Bzip2Impl, init0)(JNI_STDARGS) { int ssize = ISIZEOF(acr_bzstream); ACR_BZSIZE = ACR_ALIGN_DEFAULT(ssize); return ACR_BZSIZE; } -ACR_BZIP2_EXPORT(jlong, Bzip2Impl, newStream)(JNI_STDARGS, jint bsize) +ACR_BZIP2_EXPORT(jlong, Bzip2Impl, newHandle)(JNI_STDARGS, jint bsize) { acr_bzstream *s; s = ACR_EALLOC(acr_bzstream, bsize); @@ -333,7 +323,7 @@ ACR_BZIP2_EXPORT(jint, Bzip2Impl, setInp } ACR_BZIP2_EXPORT(jint, Bzip2Impl, setInput2)(JNI_STDARGS, jlong stream, - jlong src, jlong len) + jlong src, jint len) { int rc = BZ_PARAM_ERROR; acr_bzstream *s = J2P(stream, acr_bzstream *); @@ -342,7 +332,7 @@ ACR_BZIP2_EXPORT(jint, Bzip2Impl, setInp s->next_data = J2P(src, char *); if (s->next_data != 0) { s->bz.next_in = s->next_data; - s->bz.avail_in = (unsigned int)len; + s->bz.avail_in = len; rc = BZ_OK; } return rc; @@ -518,8 +508,8 @@ ACR_BZIP2_EXPORT(jint, Bzip2Deflater, de return len - s->bz.avail_out; } -ACR_BZIP2_EXPORT(jlong, Bzip2Deflater, deflate3)(JNI_STDARGS, jlong stream, - jlong buf, jlong len) +ACR_BZIP2_EXPORT(jint, Bzip2Deflater, deflate3)(JNI_STDARGS, jlong stream, + jlong buf, jint len) { int rc; char *next_out = J2P(buf, char *); @@ -529,7 +519,7 @@ ACR_BZIP2_EXPORT(jlong, Bzip2Deflater, d return -1; s->bz.next_out = next_out; - s->bz.avail_out = (unsigned int)len; + s->bz.avail_out = len; rc = BZ2_bzCompress((bz_stream *)s, s->state); if (rc == BZ_SEQUENCE_ERROR || rc == BZ_PARAM_ERROR) { /* Report both errors as illegal */ @@ -629,8 +619,8 @@ ACR_BZIP2_EXPORT(jint, Bzip2Inflater, in return len - s->bz.avail_out; } -ACR_BZIP2_EXPORT(jlong, Bzip2Inflater, inflate3)(JNI_STDARGS, jlong stream, - jlong buf, jlong len) +ACR_BZIP2_EXPORT(jint, Bzip2Inflater, inflate3)(JNI_STDARGS, jlong stream, + jlong buf, jint len) { int rc = BZ_PARAM_ERROR; char *next_out = J2P(buf, char *); @@ -639,7 +629,7 @@ ACR_BZIP2_EXPORT(jlong, Bzip2Inflater, i if (s->eos) return -1; s->bz.next_out = next_out; - s->bz.avail_out = (unsigned int)len; + s->bz.avail_out = len; rc = BZ2_bzDecompress((bz_stream *)s); if (rc == BZ_STREAM_END) s->eos = JNI_TRUE; Modified: commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c?rev=1158533&r1=1158532&r2=1158533&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c (original) +++ commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c Wed Aug 17 06:06:42 2011 @@ -148,6 +148,26 @@ AcrSetPointerEx(JNI_STDARGS, void *val, return 0; } +int +AcrSetPointerSz(JNI_STDARGS, size_t len) +{ + if (!CLAZZ_LOADED) { + return -1; + } + if (UNSAFE_HAS_OFF(0000) && UNSAFE_HAS_OFF(0001)) { + char *oa = *(char **)obj; + if (oa != 0) { + char *pa = oa + UNSAFE_FLD_OFF(0001); + *((jlong *)pa) = P2J(len); + return 0; + } + } + /* Fallback to a traditional method. + */ + SET_IFIELD_P(0001, obj, len); + return 0; +} + #if defined(WINDOWS) ACR_WIN_EXPORT(jobject, Win32, pointer) #else @@ -160,7 +180,7 @@ ACR_UNX_EXPORT(jobject, Posix, pointer) switch (type) { case 1: - return AcrNewHeapPointer(env, memptr, size); + return AcrNewHeapPointer(env, memptr, size); break; case 2: return AcrNewSlicePointer(env, memptr, size);