From f0cb26ec51950b85abed282acc89256d79cf8c5b Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Mon, 29 Aug 2011 14:31:30 -0600 Subject: [PATCH 1/4] treat carriage returns as whitespace when parsing types.def On Windows, some versions of Git automatically translate Unix line endings to Windows line endings, which can break the build unless we treat carriage returns as whitespace when parsing. --- src/type-generator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/type-generator.cpp b/src/type-generator.cpp index 626573af8e..254fd966d8 100644 --- a/src/type-generator.cpp +++ b/src/type-generator.cpp @@ -790,7 +790,7 @@ read(Input* in, Object* eos, int level) } } break; - case ' ': case '\t': case '\n': { + case ' ': case '\t': case '\n': case '\r': { if (s.first) { return String::make(s.first); } From c75b06ddc1765ebd01a90fad1cdf28f173bedf00 Mon Sep 17 00:00:00 2001 From: Seth Goings Date: Wed, 31 Aug 2011 20:46:15 -0600 Subject: [PATCH 2/4] Added support for non POSIX line endings. Will now accept: \r and \r\n as line endings (per Sun's JavaDoc) --- classpath/java/io/BufferedReader.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/classpath/java/io/BufferedReader.java b/classpath/java/io/BufferedReader.java index 3db923c5e9..7b8e940681 100644 --- a/classpath/java/io/BufferedReader.java +++ b/classpath/java/io/BufferedReader.java @@ -42,9 +42,12 @@ public class BufferedReader extends Reader { } for (int i = position; i < limit; ++i) { - if (buffer[i] == '\n') { + if (buffer[i] == '\n' || buffer[i] == '\r') { sb.append(buffer, position, i - position); position = i + 1; + if(buffer[i+1] != null && buffer[i+1] == '\n') { + position = i + 1; + } return sb.toString(); } } From 97e03b9f286a8f59b7cfaff257ec6838a8eb7f05 Mon Sep 17 00:00:00 2001 From: Seth Goings Date: Thu, 1 Sep 2011 09:11:39 -0600 Subject: [PATCH 3/4] Fixed possible ArrayIndexOutOfBounds exception --- classpath/java/io/BufferedReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classpath/java/io/BufferedReader.java b/classpath/java/io/BufferedReader.java index 7b8e940681..9c77a3246a 100644 --- a/classpath/java/io/BufferedReader.java +++ b/classpath/java/io/BufferedReader.java @@ -45,7 +45,7 @@ public class BufferedReader extends Reader { if (buffer[i] == '\n' || buffer[i] == '\r') { sb.append(buffer, position, i - position); position = i + 1; - if(buffer[i+1] != null && buffer[i+1] == '\n') { + if(i+1 < limit && buffer[i+1] == '\n') { position = i + 1; } return sb.toString(); From fb3a23f02db789a8c49a2b7de149d685a77a22c0 Mon Sep 17 00:00:00 2001 From: Seth Goings Date: Thu, 1 Sep 2011 09:31:08 -0600 Subject: [PATCH 4/4] Fixed behavior of readLine accepting *\n\n as a line, not two --- classpath/java/io/BufferedReader.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/classpath/java/io/BufferedReader.java b/classpath/java/io/BufferedReader.java index 9c77a3246a..236a086b80 100644 --- a/classpath/java/io/BufferedReader.java +++ b/classpath/java/io/BufferedReader.java @@ -42,13 +42,18 @@ public class BufferedReader extends Reader { } for (int i = position; i < limit; ++i) { - if (buffer[i] == '\n' || buffer[i] == '\r') { + if(buffer[i] == '\r') { sb.append(buffer, position, i - position); position = i + 1; if(i+1 < limit && buffer[i+1] == '\n') { position = i + 1; + return sb.toString(); } return sb.toString(); + } else if (buffer[i] == '\n') { + sb.append(buffer, position, i - position); + position = i + 1; + return sb.toString(); } } sb.append(buffer, position, limit-position);