Commit d02bc1fb by Bryce McKinlay Committed by Bryce McKinlay

InflaterInputStream (read): Don't return -1 unless the infate() call didn't deliver any output.

	* java/util/zip/InflaterInputStream (read): Don't return -1 unless
	the infate() call didn't deliver any output. Throw a ZipException if
	the needsDictionary() call returns true.
	* java/io/ByteArrayInputStream (read): Remove redundant bounds checks.
	* java/io/InputStreamReader: Use the default buffer size for the
	contained BufferedInputStream.

From-SVN: r37846
parent 172c38bb
...@@ -5,6 +5,13 @@ ...@@ -5,6 +5,13 @@
* configure.in: Check for setlocale. * configure.in: Check for setlocale.
* configure: Rebuilt. * configure: Rebuilt.
* include/config.h.in: Rebuilt. * include/config.h.in: Rebuilt.
* java/util/zip/InflaterInputStream (read): Don't return -1 unless
the infate() call didn't deliver any output. Throw a ZipException if
the needsDictionary() call returns true.
* java/io/ByteArrayInputStream (read): Remove redundant bounds checks.
* java/io/InputStreamReader: Use the default buffer size for the
contained BufferedInputStream.
2000-11-28 Warren Levy <warrenl@cygnus.com> 2000-11-28 Warren Levy <warrenl@cygnus.com>
......
...@@ -72,9 +72,6 @@ public class ByteArrayInputStream extends InputStream ...@@ -72,9 +72,6 @@ public class ByteArrayInputStream extends InputStream
public synchronized int read() public synchronized int read()
{ {
if (pos < 0)
throw new ArrayIndexOutOfBoundsException(pos);
if (pos < count) if (pos < count)
return ((int) buf[pos++]) & 0xFF; return ((int) buf[pos++]) & 0xFF;
return -1; return -1;
...@@ -82,10 +79,6 @@ public class ByteArrayInputStream extends InputStream ...@@ -82,10 +79,6 @@ public class ByteArrayInputStream extends InputStream
public synchronized int read(byte[] b, int off, int len) public synchronized int read(byte[] b, int off, int len)
{ {
/* Don't need to check pos value, arraycopy will check it. */
if (off < 0 || len < 0 || off + len > b.length)
throw new ArrayIndexOutOfBoundsException();
if (pos >= count) if (pos >= count)
return -1; return -1;
......
...@@ -46,7 +46,7 @@ public class InputStreamReader extends Reader ...@@ -46,7 +46,7 @@ public class InputStreamReader extends Reader
{ {
this.in = in instanceof BufferedInputStream this.in = in instanceof BufferedInputStream
? (BufferedInputStream) in ? (BufferedInputStream) in
: new BufferedInputStream(in, 250); : new BufferedInputStream(in);
/* Don't need to call super(in) here as long as the lock gets set. */ /* Don't need to call super(in) here as long as the lock gets set. */
this.lock = in; this.lock = in;
converter = decoder; converter = decoder;
......
...@@ -44,8 +44,6 @@ public class InflaterInputStream extends FilterInputStream ...@@ -44,8 +44,6 @@ public class InflaterInputStream extends FilterInputStream
{ {
protected void fill () throws IOException protected void fill () throws IOException
{ {
if (inf == null)
throw new IOException ("stream closed");
len = in.read(buf, 0, buf.length); len = in.read(buf, 0, buf.length);
if (len != -1) if (len != -1)
inf.setInput(buf, 0, len); inf.setInput(buf, 0, len);
...@@ -85,18 +83,23 @@ public class InflaterInputStream extends FilterInputStream ...@@ -85,18 +83,23 @@ public class InflaterInputStream extends FilterInputStream
return -1; return -1;
if (inf.needsInput()) if (inf.needsInput())
fill (); fill ();
if (this.len == -1) int count;
return -1; // Couldn't get any more data to feed to the Inflater
if (inf.needsDictionary())
return -1;
try try
{ {
return inf.inflate(buf, off, len); count = inf.inflate(buf, off, len);
if (count == 0)
{
if (len == -1)
return -1; // Couldn't get any more data to feed to the Inflater
if (inf.needsDictionary())
throw new ZipException ("Inflater needs Dictionary");
}
} }
catch (DataFormatException dfe) catch (DataFormatException dfe)
{ {
throw new ZipException (dfe.getMessage()); throw new ZipException (dfe.getMessage());
} }
return count;
} }
public void close () throws IOException public void close () throws IOException
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment