On Tue, 4 Jun 2024 20:43:09 GMT, Justin Lu <j...@openjdk.org> wrote: >> Please review this PR which handles incorrect CompactNumberFormat integer >> only parsing when there is no suffix. >> >> See the following snippet, >> >> >> var fmt = NumberFormat.getCompactNumberInstance(Locale.US, >> NumberFormat.Style.SHORT) >> fmt.setParseIntegerOnly(true) >> fmt.parse("5K") // returns 5000 >> fmt.parse("50.00") // returns 50 >> fmt.parse("5") // unexpectedly throws StringIndexOutOfBoundsException >> fmt.parse("5 ") // returns 5 >> >> >> Within the `parse` method, there is code that advances `position` past the >> fractional portion to find the suffix when `parseIntegerOnly()` is true. >> However, if a valid string input is given with no suffix, >> `DecimalFormat.subparseNumber()` will fully iterate through the string and >> `position` will be equal to the length of the string, throwing >> StringIndexOutOfBoundsException when `charAt` is invoked (line 1740). >> >> We should check to make sure position does not exceed the string length >> before deciding to check for a decimal symbol. > > Justin Lu has updated the pull request incrementally with one additional > commit since the last revision: > > move test to existing test file
LGTM. Thanks for the changes. ------------- Marked as reviewed by naoto (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/19533#pullrequestreview-2099786378