fixed nasty livelock bug in LineReader
authoradam <adam@megacz.com>
Wed, 23 Jun 2004 02:16:03 +0000 (02:16 +0000)
committeradam <adam@megacz.com>
Wed, 23 Jun 2004 02:16:03 +0000 (02:16 +0000)
darcs-hash:20040623021603-5007d-905d1734961d65907fd26cd3826f027dd7c199ed.gz

src/org/ibex/util/LineReader.java

index 972dfe5..429c218 100644 (file)
@@ -3,7 +3,7 @@ import java.io.*;
 
 public class LineReader {
 
-    private static int MAXBUF = 1024 * 16;
+    private int MAXBUF = 1024 * 16;
     char[] buf = new char[MAXBUF];
     int buflen = 0;
     Reader r;
@@ -26,6 +26,12 @@ public class LineReader {
                     return ret;
                 }
             }
+           if (buflen == MAXBUF) {
+               char[] buf2 = new char[MAXBUF*2];
+               System.arraycopy(buf, 0, buf2, 0, buflen);
+               buf = buf2;
+               MAXBUF *= 2;
+           }
             int numread = r.read(buf, buflen, MAXBUF - buflen);
             if (numread == -1) {
                 if (buflen == 0) return null;