On Fri, 24 Sep 2021 11:28:09 GMT, Masanori Yano <my...@openjdk.org> wrote:

> Could you please review the 8250678 bug fixes?
> 
> The `parse` method of ModuleDescriptor.Version class behaves incorrectly when 
> the input string contains consecutive delimiters.
> 
> The `parse` method treats strings as three sections, but the parsing method 
> differs between the method for the version sections and the ones for others. 
> In version sections, the `parse` method takes a single character in a loop 
> and determines whether it is a delimiter. In pre and build sections, the 
> parse method takes two characters in a loop and determines whether the second 
> character is the delimiter. Therefore, if the string contains a sequence of 
> delimiters in pre or build section, the `parse` method treats character at 
> the odd-numbered position as a token and the one at even-numbered as a 
> delimiter.
> 
> A string containing consecutive delimiters is an incorrect version string, 
> but this behavior does not follow the API specification.
> https://download.java.net/java/early_access/jdk18/docs/api/java.base/java/lang/module/ModuleDescriptor.Version.html
> 
> Therefore, I propose to fix the parsing method of pre and build section in 
> the same way as the version.

I would suggest to create a separate issue to follow up the spec clarification 
and keep this PR to fix the implementation.

The version parsing code is tricky.  The fix is straight-forward, just moving 
the check of the delimiters as the first check when iterating the char 
sequence.  I think it's fine for this fix to go in first.  @AlanBateman what do 
you think?

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

PR: https://git.openjdk.java.net/jdk/pull/5679

Reply via email to