On Thu, 29 Jan 2026 23:14:28 GMT, Chen Liang <[email protected]> wrote:
>> 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.
>
> This should be sufficient for StressSBTest:
>
> diff --git a/test/jdk/java/lang/StringBuilder/StressSBTest.java
> b/test/jdk/java/lang/StringBuilder/StressSBTest.java
> index a5dc6672f07..6219851ee3b 100644
> --- a/test/jdk/java/lang/StringBuilder/StressSBTest.java
> +++ b/test/jdk/java/lang/StringBuilder/StressSBTest.java
> @@ -1,5 +1,5 @@
> /*
> - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights
> reserved.
> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> *
> * This code is free software; you can redistribute it and/or modify it
> @@ -279,6 +279,7 @@ private boolean invokeByMethodNameAndType(String name,
> MethodType mt, StringBuil
> case "charAt(StringBuilder,int)char" -> sb.charAt(5);
> case "codePointAt(StringBuilder,int)int" ->
> sb.codePointAt(4);
> case "codePointBefore(StringBuilder,int)int" ->
> sb.codePointBefore(3);
> + case "codePointCount(StringBuilder)int" ->
> sb.codePointCount();
> case "codePointCount(StringBuilder,int,int)int" ->
> sb.codePointCount(3, 9);
> case "offsetByCodePoints(StringBuilder,int,int)int" ->
> sb.offsetByCodePoints(3, 7);
> case "lastIndexOf(StringBuilder,String,int)int" ->
> sb.lastIndexOf("A", 45);
Do we not need other additional test cases?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26461#discussion_r2743926620