[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
BufferedReader fix
From: |
Guilhem Lavaux |
Subject: |
BufferedReader fix |
Date: |
Sat, 27 Dec 2003 14:11:19 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007 |
Hi,
I've checked in only one of the two patch to BufferedReader as I can't
figure out what was wrong with the other one. This patch make readLine()
really block on all input readers.
Guilhem.
Index: ChangeLog
===================================================================
RCS file: /cvsroot/classpath/classpath/ChangeLog,v
retrieving revision 1.1721
diff -u -r1.1721 ChangeLog
--- ChangeLog 27 Dec 2003 12:58:35 -0000 1.1721
+++ ChangeLog 27 Dec 2003 13:05:23 -0000
@@ -1,3 +1,8 @@
+2003-12-27 Guilhem Lavaux <address@hidden>
+
+ * java/io/BufferedReader (readLine): Make readLine() really block
+ until either EOF is reached or a true error happens.
+
2003-12-27 Michael Koch <address@hidden>
* gnu/java/net/protocol/http/Connection.java
Index: java/io/BufferedReader.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/io/BufferedReader.java,v
retrieving revision 1.20
diff -u -r1.20 BufferedReader.java
--- java/io/BufferedReader.java 26 Dec 2003 12:15:51 -0000 1.20
+++ java/io/BufferedReader.java 27 Dec 2003 13:05:24 -0000
@@ -460,12 +460,19 @@
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,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- BufferedReader fix,
Guilhem Lavaux <=