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"));
+    }
 }

Reply via email to