This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-text.git
The following commit(s) were added to refs/heads/master by this push:
new a3e4306d TEXT-239: TextStringBuilder.append(char[], int, int) uses
wrong variable in exception message (#735)
a3e4306d is described below
commit a3e4306d56481d039d19bbb020fcffde4a5d91ce
Author: Ivan Ponomarev <[email protected]>
AuthorDate: Wed Jan 28 11:15:12 2026 +0000
TEXT-239: TextStringBuilder.append(char[], int, int) uses wrong variable in
exception message (#735)
* fix text-239
* fix for StrBuilder
* fix checkstyle issues
---
src/main/java/org/apache/commons/text/StrBuilder.java | 2 +-
.../java/org/apache/commons/text/TextStringBuilder.java | 2 +-
.../java/org/apache/commons/text/StrBuilderTest.java | 17 +++++++++++++++++
.../org/apache/commons/text/TextStringBuilderTest.java | 17 +++++++++++++++++
4 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/commons/text/StrBuilder.java
b/src/main/java/org/apache/commons/text/StrBuilder.java
index fce069d0..f1df60a2 100644
--- a/src/main/java/org/apache/commons/text/StrBuilder.java
+++ b/src/main/java/org/apache/commons/text/StrBuilder.java
@@ -376,7 +376,7 @@ public class StrBuilder implements CharSequence,
Appendable, Serializable, Build
return appendNull();
}
if (startIndex < 0 || startIndex > chars.length) {
- throw new StringIndexOutOfBoundsException("Invalid startIndex: " +
length);
+ throw new StringIndexOutOfBoundsException("Invalid startIndex: " +
startIndex);
}
if (length < 0 || startIndex + length > chars.length) {
throw new StringIndexOutOfBoundsException("Invalid length: " +
length);
diff --git a/src/main/java/org/apache/commons/text/TextStringBuilder.java
b/src/main/java/org/apache/commons/text/TextStringBuilder.java
index b3ea8585..2977fa32 100644
--- a/src/main/java/org/apache/commons/text/TextStringBuilder.java
+++ b/src/main/java/org/apache/commons/text/TextStringBuilder.java
@@ -483,7 +483,7 @@ public class TextStringBuilder implements CharSequence,
Appendable, Serializable
return appendNull();
}
if (startIndex < 0 || startIndex > chars.length) {
- throw new StringIndexOutOfBoundsException("Invalid startIndex: " +
length);
+ throw new StringIndexOutOfBoundsException("Invalid startIndex: " +
startIndex);
}
if (length < 0 || startIndex + length > chars.length) {
throw new StringIndexOutOfBoundsException("Invalid length: " +
length);
diff --git a/src/test/java/org/apache/commons/text/StrBuilderTest.java
b/src/test/java/org/apache/commons/text/StrBuilderTest.java
index 6ae331e9..5edfec6f 100644
--- a/src/test/java/org/apache/commons/text/StrBuilderTest.java
+++ b/src/test/java/org/apache/commons/text/StrBuilderTest.java
@@ -2017,4 +2017,21 @@ class StrBuilderTest {
assertEquals("a b c", sb.trim().toString());
}
+ @Test
+ void testErrorMessageShowsCorrectVariable() {
+ final StrBuilder sb = new StrBuilder("Hello");
+ final char[] chars = {'a', 'b', 'c'};
+
+ StringIndexOutOfBoundsException ex = assertThrows(
+ StringIndexOutOfBoundsException.class,
+ () -> sb.append(chars, 1, 4)
+ );
+ assertTrue(ex.getMessage().contains("length: 4"));
+
+ ex = assertThrows(
+ StringIndexOutOfBoundsException.class,
+ () -> sb.append(chars, 7, 3)
+ );
+ assertTrue(ex.getMessage().contains("startIndex: 7"));
+ }
}
diff --git a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
index 1900c19d..1efbf251 100644
--- a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
+++ b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
@@ -2393,4 +2393,21 @@ class TextStringBuilderTest {
assertThrows(IllegalArgumentException.class, () ->
TextStringBuilder.wrap(ArrayUtils.EMPTY_CHAR_ARRAY, 1));
}
+ @Test
+ void testErrorMessageShowsCorrectVariable() {
+ final TextStringBuilder sb = new TextStringBuilder("Hello");
+ final char[] chars = {'a', 'b', 'c'};
+
+ StringIndexOutOfBoundsException ex = assertThrows(
+ StringIndexOutOfBoundsException.class,
+ () -> sb.append(chars, 1, 4)
+ );
+ assertTrue(ex.getMessage().contains("length: 4"));
+
+ ex = assertThrows(
+ StringIndexOutOfBoundsException.class,
+ () -> sb.append(chars, 7, 3)
+ );
+ assertTrue(ex.getMessage().contains("startIndex: 7"));
+ }
}