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