RFR: 8300207: Add a pre-check for the number of canonical equivalent permutations in j.u.r.Pattern
Raffaello Giulietti
rgiulietti at openjdk.org
Tue Jan 17 14:58:24 UTC 2023
On Tue, 17 Jan 2023 12:23:25 GMT, Alan Bateman <alanb at openjdk.org> wrote:
>> The choice of a `<p>` paragraph rather than `@apiNote` is for consistency with similar commentary paragraphs in the specs of `CASE_INSENSITIVE`, `UNICODE_CASE`, and `UNICODE_CHARACTER_CLASS`.
>>
>> I have no problems in using `@apiNote` instead, but then it would be better to apply the same for the other mentioned flags as well.
>
> Okay, I see your point and to use apiNote consistently would require "converting" some of the existing text to apiNote too.
>
> I'm still mulling over Pattern.compile throwing OOME. An implNote is probably the right category for this, in which case it can start with "In the the JDK Reference Implementation ...". I assume the static Pattern.matches needs same, and also Pattern.matcher for the lazy compilation case.
There's no hard limit for the number of combining marks in the Unicode specification, even though in practice it never reaches the implementation limit. A high number of combining marks is thus more akin to a a resource exhaustion condition than to anything else, IMO.
Even today, compilation of a pattern risks throwing an OOME anyway when trying to generate the permutations. Pre-emptively throwing an OOME just anticipates and extrapolates this behavior beyond the `int` limit of array lengths.
Alternatively, compilation (greedy or lazy) could throw `PatternSyntaxException`, although there is not really something wrong with syntax.
I'll add `@implNote` to the other methods you mention.
-------------
PR: https://git.openjdk.org/jdk/pull/12027
More information about the core-libs-dev
mailing list