RFR [XXS] 8130778: (str) Make AbstractStringBuilder.append(CharSequence, int, int) to throw StringIndexOutOfBoundsException

Ivan Gerasimov ivan.gerasimov at oracle.com
Thu Jul 9 17:58:05 UTC 2015


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
>>>
>>>
>>>
>>
>
>
>




More information about the core-libs-dev mailing list