What about this variant?
http://cr.openjdk.java.net/~igerasim/8130778/00/webrev/

So, we'll throw SOOB only if the CharSequence is actually a String.
I've also added the same code to insert(int,CharSequence,int,int) for the sake of symmetry.

Sincerely yours,
Ivan

On 11.07.2015 20:22, Xueming Shen wrote:
Hi,

Arguably the "StringIndexOutOfBoundsException" should only be used when the index is out of a "String" (the builder included) boundary, but the offending object and the index here is CharSequence/index. The places that throw StringIndexoutOfBoundsException are all for the
index/offset/length of the ASB.

-sherman

On 07/08/2015 10:02 AM, Ivan Gerasimov wrote:
Resending the request with a new bug id.

On 07.07.2015 15:55, Ivan Gerasimov wrote:
Hi!

With the fix for JDK-8077242 ((str) Optimize AbstractStringBuilder.append(CharSequence, int, int) for String argument) a change in behavior was introduced.

In the places, where sb.append(str.substring(from, to)) used to be called, in the case of wrong indices StringIndexOutOfBoundsException was thrown. Now, after I replaced the code to sb.append(str, from, to), in such cases IndexOutOfBoundsException is thrown.

The proposal is to make AbstractStringBuilder.append(CharSequence, int, int) throw more specific StringIndexOutOfBoundsException, which
1) will eliminate the regression,
2) will be more consistent with most other methods of AbstractStringBuilder, which throw StringIndexOutOfBoundsException.

BUGURL: https://bugs.openjdk.java.net/browse/JDK-8130646
WEBREV: http://cr.openjdk.java.net/~igerasim/8130646/00/webrev/

Sincerely yours,
Ivan








Reply via email to