From 7b32365433b7fbef4b7ad9ce2f9f5721abda47f7 Mon Sep 17 00:00:00 2001 From: Weixie Cui Date: Fri, 27 Mar 2026 11:18:06 +0800 Subject: [PATCH] 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 1d3b113e569..a49462e1a2f 100644 --- a/src/main/java/groovy/io/LineColumnReader.java +++ b/src/main/java/groovy/io/LineColumnReader.java @@ -136,7 +136,7 @@ public int read() throws IOException { */ @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;