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

Alan Bateman Alan.Bateman at Sun.COM
Sun Jul 27 14:40:28 UTC 2008


Martin Buchholz wrote:
> 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.
>   
I've added these to 6728229 as it seems sensible to fix these when 
removing the bogus exception from StringBuilder.append(CharSequence). I 
hope that is okay with you.

-Alan.


> 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