On Sun, 3 Mar 2024 05:00:36 GMT, Guoxiong Li <g...@openjdk.org> wrote:

>> Please review this PR and corresponding CSR which prevents an 
>> OutOfMemoryError by restricting the initial maximum fraction digits for an 
>> empty pattern DecimalFormat.
>> 
>> For an empty String pattern DecimalFormat, the maximum fraction digits is 
>> initialized to `Integer.MAX_VALUE`. When toPattern() is invoked, 
>> StringBuilder internally doubles capacity attempting to append 
>> Integer.MAX_VALUE digits until OOME occurs. CSR covers potential behavioral 
>> compatibility changes.
>
>> When toPattern() is invoked, StringBuilder internally doubles capacity 
>> attempting to append Integer.MAX_VALUE digits until OOME occurs.
> 
> It seems a bug in `toPattern` or `StringBuilder`? May be better to 
> investigate more about it.

Hi @lgxbslgx,

For clarification, this is entirely a bug with DecimalFormat, not 
StringBuilder. An empty String pattern DecimalFormat sets the maximum fraction 
digits to `Integer.MAX_VALUE`. When toPattern() is invoked, the local 
StringBuilder will append until an OOME is thrown by the StringBuilder as there 
is not enough memory, when internally, the buffer is doubled for a value too 
large. But such an OOME would occur for any large enough value, so the issue 
lies with DecimalFormat.

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

PR Comment: https://git.openjdk.org/jdk/pull/18094#issuecomment-1977712428

Reply via email to