updated Makefile.common
[org.ibex.core.git] / src / org / ibex / util / LineReader.java
index 88b785d..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;
@@ -22,16 +22,24 @@ public class LineReader {
                     if (buf[i-1] == '\r') ret = new String(buf, 0, i-1);
                     else ret = new String(buf, 0, i);
                     System.arraycopy(buf, i+1, buf, 0, buflen - (i+1));
-                    buflen -= i;
+                    buflen -= i+1;
                     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 == 0) {
+            if (numread == -1) {
                 if (buflen == 0) return null;
                 String ret = new String(buf, 0, buflen);
                 buflen = 0;
                 return ret;
+            } else {
+                buflen += numread;
             }
         }
     }