Author: ggregory Date: Mon Mar 19 20:56:34 2012 New Revision: 1302652 URL: http://svn.apache.org/viewvc?rev=1302652&view=rev Log: [CODEC-130] Base64InputStream.skip skips underlying stream, not output. Can skip more than Integer.MAX_VALUE at a time.
Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java?rev=1302652&r1=1302651&r2=1302652&view=diff ============================================================================== --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java (original) +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/BaseNCodecInputStream.java Mon Mar 19 20:56:34 2012 @@ -163,21 +163,17 @@ public class BaseNCodecInputStream exten // skip in chunks of 512 bytes final byte[] b = new byte[512]; - final int max = (int) Math.min(n, Integer.MAX_VALUE); - int total = 0; + long todo = n; - while (total < max) { - int len = max - total; - if (len > b.length) { - len = b.length; - } - len = read(b, 0, len); + while (todo > 0) { + int len = (int) Math.min(b.length, todo); + len = this.read(b, 0, len); if (len == EOF) { break; } - total += len; + todo -= len; } - return total; + return n - todo; } }