StringBuXXXXX.append(char str[], int offset, int len)

Martin Buchholz martinrb at google.com
Wed Jul 23 01:56:22 UTC 2008


This is a bug report with fix.

StringBuilder, AbstractStringBuilder, and StringBuffer
fail to specify IndexOutOfBoundsException for
append(char str[], int offset, int len)
although other methods in these classes are careful to do so.

Here's the fix:

diff --git a/src/share/classes/java/lang/AbstractStringBuilder.java
b/src/share/classes/java/lang/AbstractStringBuilder.java
--- a/src/share/classes/java/lang/AbstractStringBuilder.java
+++ b/src/share/classes/java/lang/AbstractStringBuilder.java
@@ -525,6 +525,9 @@
      * @param   offset   the index of the first <code>char</code> to append.
      * @param   len      the number of <code>char</code>s to append.
      * @return  a reference to this object.
+     * @throws IndexOutOfBoundsException
+     *         if {@code offset < 0} or {@code len < 0}
+     *         or {@code offset+len > str.length}
      */
     public AbstractStringBuilder append(char str[], int offset, int len) {
         int newCount = count + len;
diff --git a/src/share/classes/java/lang/StringBuffer.java
b/src/share/classes/java/lang/StringBuffer.java
--- a/src/share/classes/java/lang/StringBuffer.java
+++ b/src/share/classes/java/lang/StringBuffer.java
@@ -319,6 +319,9 @@
         return this;
     }

+    /**
+     * @throws IndexOutOfBoundsException {@inheritDoc}
+     */
     public synchronized StringBuffer append(char str[], int offset, int len) {
         super.append(str, offset, len);
         return this;
diff --git a/src/share/classes/java/lang/StringBuilder.java
b/src/share/classes/java/lang/StringBuilder.java
--- a/src/share/classes/java/lang/StringBuilder.java
+++ b/src/share/classes/java/lang/StringBuilder.java
@@ -201,6 +201,9 @@
         return this;
     }

+    /**
+     * @throws IndexOutOfBoundsException {@inheritDoc}
+     */
     public StringBuilder append(char str[], int offset, int len) {
         super.append(str, offset, len);
         return this;

More changes to these classes to come.

Martin



More information about the core-libs-dev mailing list