On Thu, 29 Jan 2026 10:47:55 GMT, Tatsunori Uchino <[email protected]> wrote:

>> Adds `codePointCount()` overloads to `String`, `Character`, 
>> `(Abstract)StringBuilder`, and `StringBuffer` to make it possible to 
>> conveniently retrieve the length of a string as code points without extra 
>> boundary checks.
>> 
>> 
>> if (superTremendouslyLongExpressionYieldingAString().codePointCount() > 
>> limit) {
>>     throw new Exception("exceeding length");
>> }
>> 
>> 
>> Is a CSR required to this change?
>
> Tatsunori Uchino has updated the pull request with a new target base due to a 
> merge or a rebase. The pull request now contains 20 commits:
> 
>  - Merge remote-tracking branch 'origin/master' into codepoint-count
>  - Fix comments
>  - Don't use removed `Character::codePointCount` overload
>  - Update year in copyright
>  - Fix double empty lines
>  - Remove `Character.codePointCount()`
>  - Replace "unpaired surrogates" with "isolated surrogate code units"
>    
>    https://www.unicode.org/versions/Unicode17.0.0/core-spec/chapter-3/#G1654
>    https://www.unicode.org/charts/PDF/UDC00.pdf
>  - Remove `Character.codePointCount` overload
>  - Rename parameter names from `a` to `seq`
>    
>    `chars` is too confusing with `char`
>  - Improve JavaDoc
>    
>    Co-authored-by: Chen Liang <[email protected]>
>  - ... and 10 more: https://git.openjdk.org/jdk/compare/681e4ec8...198b3188

Please fix this identified thread safety issue. 

Submitted your patch to our CI for testing. I built the Javadoc locally, the 
since-only tag works like this so they are fine:
<img width="1837" height="578" alt="image" 
src="https://github.com/user-attachments/assets/2b2f8926-0a4d-4540-9fce-f3c91b26979f";
 />

src/java.base/share/classes/java/lang/AbstractStringBuilder.java line 542:

> 540:             return count;
> 541:         }
> 542:         return StringUTF16.codePointCount(value, 0, count);

Suggestion:

        return StringUTF16.codePointCountSB(value, 0, count);

In buggy user program that use StringBuilder from more than one threads, we can 
have `value.length < count`, so we must perform this call checked.

I think we need a new entry for this method in 
`test/jdk/java/lang/StringBuilder/StressSBTest.java` too.

-------------

Changes requested by liach (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/26461#pullrequestreview-3725332918
PR Review Comment: https://git.openjdk.org/jdk/pull/26461#discussion_r2743790652

Reply via email to