Thank you for catching this bug. AbstractStringBuilder.codePointAt(int) should have called Character.codePointAt(char[], int, int).

As for duplicating code, I originally duplicated similar code everywhere for performance. But someone told me probably during code review that hotspot inlining was as good as C/C++ macros, and I agreed to replace the duplicated code with method calls.

Masayoshi

On 3/19/2013 7:13 AM, Martin Buchholz wrote:
It does change the behavior.  The existing behavior is clearly a bug, since
it reads a char that should be inaccessible.  I don't believe AIOOBE
exception is thrown, with or without my fix.


On Mon, Mar 18, 2013 at 3:08 PM, Mike Duigou <mike.dui...@oracle.com> wrote:

This change would seem to change the result when a high surrogate is the
last char in the String/StringBuilder/StringBuffer.

Rather than throwing an ArrayIndexException it will return the high
surrogate char.

I am going to defer to Sherman on this. I don't know that returning the
character is the right thing to do.

Sherman?

Mike

On Mar 18 2013, at 14:28 , Martin Buchholz wrote:

Hello Jim, Mike,

I'd like you to do a code review:

http://cr.openjdk.java.net/~martin/webrevs/openjdk8/surrogate-fiddle/




Reply via email to