mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8267529: StringJoiner can create a String that breaks String::equals
Reviewed-by: naoto
This commit is contained in:
parent
7f52c50ba3
commit
95b1fa7a88
2 changed files with 20 additions and 4 deletions
|
@ -3239,8 +3239,12 @@ public final class String
|
|||
*/
|
||||
@ForceInline
|
||||
static String join(String prefix, String suffix, String delimiter, String[] elements, int size) {
|
||||
int icoder = prefix.coder() | suffix.coder() | delimiter.coder();
|
||||
long len = (long) prefix.length() + suffix.length() + (long) Math.max(0, size - 1) * delimiter.length();
|
||||
int icoder = prefix.coder() | suffix.coder();
|
||||
long len = (long) prefix.length() + suffix.length();
|
||||
if (size > 1) { // when there are more than one element, size - 1 delimiters will be emitted
|
||||
len += (long) (size - 1) * delimiter.length();
|
||||
icoder |= delimiter.coder();
|
||||
}
|
||||
// assert len > 0L; // max: (long) Integer.MAX_VALUE << 32
|
||||
// following loop wil add max: (long) Integer.MAX_VALUE * Integer.MAX_VALUE to len
|
||||
// so len can overflow at most once
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue