You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2026/03/27 09:39:33 UTC
(groovy) 01/02: minor refactor: fix read(char[], int, int) loop bound in LineColumnReader
This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit ac8f1d56f802c52e28b228906a76631cf7c2d39d
Author: Weixie Cui <cu...@gmail.com>
AuthorDate: Fri Mar 27 11:18:06 2026 +0800
minor refactor: fix read(char[], int, int) loop bound in LineColumnReader
Use i < startOffset + length instead of i <= startOffset + length so the
method reads at most length characters into the destination slice, matching
BufferedReader semantics and avoiding an off-by-one past the requested range.
---
src/main/java/groovy/io/LineColumnReader.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/groovy/io/LineColumnReader.java b/src/main/java/groovy/io/LineColumnReader.java
index 1d3b113e56..a49462e1a2 100644
--- a/src/main/java/groovy/io/LineColumnReader.java
+++ b/src/main/java/groovy/io/LineColumnReader.java
@@ -136,7 +136,7 @@ public class LineColumnReader extends BufferedReader {
*/
@Override
public int read(char[] chars, int startOffset, int length) throws IOException {
- for (int i = startOffset; i <= startOffset + length; i++) {
+ for (int i = startOffset; i < startOffset + length; i++) {
int readInt = read();
if (readInt == -1) return i - startOffset;
chars[i] = (char)readInt;