diff options
author | Michael Koch <konqueror@gmx.de> | 2004-09-27 09:27:28 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2004-09-27 09:27:28 +0000 |
commit | 2c11433f202147fd3bfd88f2b1b22e9e91c06d91 (patch) | |
tree | f26f4216e9089da5b212324c0917296cf311e61a /libjava/java/io | |
parent | 94c1e7acf0cac4a7eee5216659375c4398054e78 (diff) | |
download | gcc-2c11433f202147fd3bfd88f2b1b22e9e91c06d91.tar.gz |
2004-09-27 Michael Koch <konqueror@gmx.de>
* java/io/BufferedInputStream.java
(BufferedInputStream): Added Jeroen Frijters to authors.
(count): Don't explicitely initialize with default value.
(pos): Likewise.
(marklimit): Likewise.
(read): Changed boolean expression to match GNU classpath' version.
(reset): Add proper message to exception.
(skip): Check for closed stream.
(refill): Likewise.
From-SVN: r88167
Diffstat (limited to 'libjava/java/io')
-rw-r--r-- | libjava/java/io/BufferedInputStream.java | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/libjava/java/io/BufferedInputStream.java b/libjava/java/io/BufferedInputStream.java index cd8e681ed1f..3faaa6591d4 100644 --- a/libjava/java/io/BufferedInputStream.java +++ b/libjava/java/io/BufferedInputStream.java @@ -61,6 +61,7 @@ package java.io; * * @author Aaron M. Renn (arenn@urbanophile.com) * @author Warren Levy <warrenl@cygnus.com> + * @author Jeroen Frijters <jeroen@frijters.net> */ public class BufferedInputStream extends FilterInputStream { @@ -79,13 +80,13 @@ public class BufferedInputStream extends FilterInputStream * The number of valid bytes currently in the buffer. It is also the index * of the buffer position one byte past the end of the valid data. */ - protected int count = 0; + protected int count; /** * The index of the next character that will by read from the buffer. * When <code>pos == count</code>, the buffer is empty. */ - protected int pos = 0; + protected int pos; /** * The value of <code>pos</code> when the <code>mark()</code> method was @@ -100,7 +101,7 @@ public class BufferedInputStream extends FilterInputStream * After this may bytes are read, the <code>reset()</code> method * may not be called successfully. */ - protected int marklimit = 0; + protected int marklimit; /** * This is the maximum size we have to allocate for the mark buffer. @@ -260,7 +261,7 @@ public class BufferedInputStream extends FilterInputStream */ public synchronized int read(byte[] b, int off, int len) throws IOException { - if (off < 0 || len < 0 || off + len > b.length) + if (off < 0 || len < 0 || b.length - off < len) throw new IndexOutOfBoundsException(); if (pos >= count && !refill()) @@ -286,13 +287,13 @@ public class BufferedInputStream extends FilterInputStream * passed when establishing the mark. * * @exception IOException If <code>mark()</code> was never called or more - * then <code>markLimit</code> bytes were read since the last + * then <code>marklimit</code> bytes were read since the last * call to <code>mark()</code> */ public synchronized void reset() throws IOException { - if (markpos < 0) - throw new IOException(); + if (markpos == -1) + throw new IOException(buf == null ? "Stream closed." : "Invalid mark."); pos = markpos; } @@ -310,6 +311,9 @@ public class BufferedInputStream extends FilterInputStream */ public synchronized long skip(long n) throws IOException { + if (buf == null) + throw new IOException("Stream closed."); + final long origN = n; while (n > 0L) @@ -332,14 +336,16 @@ public class BufferedInputStream extends FilterInputStream } /** - * Called to refill the buffer (when count is equal or greater the pos). - * Package local so BufferedReader can call it when needed. + * Called to refill the buffer (when count is equal to pos). * - * @return <code>true</code> when <code>buf</code> can be (partly) refilled, - * <code>false</code> otherwise. + * @return <code>true</code> when at least one additional byte was read + * into <code>buf</code>, <code>false</code> otherwise (at EOF). */ boolean refill() throws IOException { + if (buf == null) + throw new IOException("Stream closed."); + if (markpos < 0) count = pos = 0; else if (markpos > 0) |