2003-12-28 Guilhem Lavaux <guilhem@kaffe.org>
* java/io/LineNumberReader.java (mark): Improved error checking. (read): Likewise. (skip): Likewise. Skip is now really eating the specified number of characters. * java/io/CharArrayReader.java (read): It should throw IndexOutOfBoundsException and not ArrayIndexOutOfBoundsException (see mauve). * java/io/BufferedReader.java (readLine): Make readLine() really block until either EOF is reached or a true error happens. From-SVN: r75180
This commit is contained in:
parent
07dc48e014
commit
920be544c9
@ -1,3 +1,16 @@
|
||||
2003-12-28 Guilhem Lavaux <guilhem@kaffe.org>
|
||||
|
||||
* java/io/LineNumberReader.java
|
||||
(mark): Improved error checking.
|
||||
(read): Likewise.
|
||||
(skip): Likewise. Skip is now really eating the specified number of
|
||||
characters.
|
||||
* java/io/CharArrayReader.java (read): It should throw
|
||||
IndexOutOfBoundsException and not ArrayIndexOutOfBoundsException (see
|
||||
mauve).
|
||||
* java/io/BufferedReader.java (readLine): Make readLine() really block
|
||||
until either EOF is reached or a true error happens.
|
||||
|
||||
2003-12-27 Michael Koch <konqueror@gmx.de>
|
||||
|
||||
* gnu/java/net/protocol/http/Connection.java
|
||||
|
@ -460,12 +460,19 @@ public class BufferedReader extends Reader
|
||||
boolean eof = false;
|
||||
for (;;)
|
||||
{
|
||||
int ch = read();
|
||||
if (ch < 0)
|
||||
// readLine should block. So we must not return until a -1 is reached.
|
||||
if (pos >= limit)
|
||||
{
|
||||
eof = true;
|
||||
break;
|
||||
// here count == 0 isn't sufficient to give a failure.
|
||||
int count = fill();
|
||||
if (count < 0)
|
||||
{
|
||||
eof = true;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
int ch = buffer[pos++];
|
||||
if (ch == '\n' || ch == '\r')
|
||||
{
|
||||
// Check here if a '\r' was the last char in the buffer; if so,
|
||||
|
@ -228,7 +228,7 @@ public class CharArrayReader extends Reader
|
||||
|
||||
/* Don't need to check pos value, arraycopy will check it. */
|
||||
if (off < 0 || len < 0 || off + len > b.length)
|
||||
throw new ArrayIndexOutOfBoundsException();
|
||||
throw new IndexOutOfBoundsException();
|
||||
|
||||
if (pos >= count)
|
||||
return -1;
|
||||
|
@ -155,6 +155,9 @@ public class LineNumberReader extends BufferedReader
|
||||
*/
|
||||
public void mark(int readLimit) throws IOException
|
||||
{
|
||||
if (readLimit < 0)
|
||||
throw new IllegalArgumentException("Read-ahead limit is negative");
|
||||
|
||||
synchronized (lock)
|
||||
{
|
||||
// This is basically the same as BufferedReader.mark.
|
||||
@ -265,9 +268,17 @@ public class LineNumberReader extends BufferedReader
|
||||
* @return The actual number of chars read, or -1 if end of stream
|
||||
*
|
||||
* @exception IOException If an error occurs.
|
||||
* @exception NullPointerException If buf is null (in any case).
|
||||
* @exception IndexOutOfBoundsException If buffer parameters (offset and
|
||||
* count) lies outside of the buffer capacity.
|
||||
*/
|
||||
public int read(char[] buf, int offset, int count) throws IOException
|
||||
{
|
||||
if (buf == null)
|
||||
throw new NullPointerException();
|
||||
if (offset + count > buf.length || offset < 0)
|
||||
throw new IndexOutOfBoundsException();
|
||||
|
||||
if (count <= 0)
|
||||
{
|
||||
if (count < 0)
|
||||
@ -376,14 +387,17 @@ public class LineNumberReader extends BufferedReader
|
||||
*/
|
||||
public long skip (long count) throws IOException
|
||||
{
|
||||
if (count <= 0)
|
||||
if (count < 0)
|
||||
throw new IllegalArgumentException("skip() value is negative");
|
||||
if (count == 0)
|
||||
return 0;
|
||||
|
||||
int skipped;
|
||||
|
||||
char[] buf = new char[1];
|
||||
|
||||
for (skipped = 0; skipped < count; skipped++)
|
||||
{
|
||||
int ch = read();
|
||||
int ch = read(buf, 0, 1);
|
||||
|
||||
if (ch < 0)
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user