RFR: 8290047: (fs) FileSystem.getPathMatcher needlessly checks syntaxAndInput.length
Brian Burkhalter
bpb at openjdk.org
Thu Jul 21 17:17:48 UTC 2022
On Thu, 21 Jul 2022 17:10:12 GMT, Roger Riggs <rriggs at openjdk.org> wrote:
>> For a `String` “s”, `s.indexOf(int)` can never return a value `>= s.length()` so change the check
>>
>> int pos = syntaxAndInput.indexOf(':');
>> if (pos <= 0 || pos == syntaxAndInput.length())
>>
>> to
>>
>> if (pos <= 0)
>
> src/java.base/share/classes/jdk/internal/jrtfs/JrtFileSystem.java line 178:
>
>> 176: public PathMatcher getPathMatcher(String syntaxAndInput) {
>> 177: int pos = syntaxAndInput.indexOf(':');
>> 178: if (pos <= 0 || pos == syntaxAndInput.length()) {
>
> Is this really a different bug? Should it be checking for `length() - 1` to throw IAE.
> That would then throw if there was no string after the syntax selector; for example "glob:"
You have a point there. It does not want the ":" to be at the first position so it should not want it at the last position as the "pattern" part of the string would be empty. That fits with the specification
IllegalArgumentException.html - If the parameter does not take the form: syntax:pattern
-------------
PR: https://git.openjdk.org/jdk/pull/9595
More information about the core-libs-dev
mailing list