RFR: 8321180: Condition for non-latin1 string size too large exception is off by one

ExE Boss duke at openjdk.org
Fri Dec 8 16:32:16 UTC 2023


On Wed, 6 Dec 2023 23:31:26 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

> In the compact string implementation of non-latin1 (UTF16) strings the length is constrained by VM implementation limit on the size a byte array that can be allocated. To produce a useful exception the implementation checks the string size against the maximum byte array size. The exception message is correct
> 
> "UTF16 String size is " + len + ", should be less than or equal to " + MAX_LENGTH
> 
> The code should match the message, otherwise the exception thrown is: 
> 
> java.lang.OutOfMemoryError: Requested array size exceeds VM limit

src/java.base/share/classes/java/lang/StringUTF16.java line 59:

> 57:         if (len >= MAX_LENGTH) {
> 58:             throw new OutOfMemoryError("UTF16 String size is " + len +
> 59:                                        ", should be less than or equal to " + MAX_LENGTH);

Suggestion:

                                       ", should be less than " + MAX_LENGTH);

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17008#discussion_r1420747765


More information about the core-libs-dev mailing list