From: Shane Carr Date: Thu, 14 Sep 2017 00:35:08 +0000 (+0000) Subject: ICU-13021 Disallow grouping separators in exponential patterns. X-Git-Tag: release-60-rc~98^2~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=33d0dbbb73875fb54301ea3def33d658dae952c2;p=icu ICU-13021 Disallow grouping separators in exponential patterns. X-SVN-Rev: 40411 --- diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java index 1bf8d5e62c6..853ed1dd568 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/PatternStringParser.java @@ -484,6 +484,9 @@ public class PatternStringParser { if (state.peek() != 'E') { return; } + if ((result.groupingSizes & 0xffff0000L) != 0xffff0000L) { + throw state.toParseException("Cannot have grouping separator in scientific notation"); + } state.next(); // consume the E result.widthExceptAffixes++; if (state.peek() == '+') { diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java index aabf06adb0e..b0979839862 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/PatternStringTest.java @@ -46,7 +46,6 @@ public class PatternStringTest { {"0E0", "0E0"}, {"#00E00", "#00E00"}, {"#,##0", "#,##0"}, - {"#,##0E0", "#,##0E0"}, {"#;#", "0;0"}, {"#;-#", "0"}, // ignore a negative prefix pattern of '-' since that is the default {"**##0", "**##0"}, @@ -99,7 +98,7 @@ public class PatternStringTest { @Test public void testExceptionOnInvalid() { String[] invalidPatterns = { - "#.#.#", "0#", "0#.", ".#0", "0#.#0", "@0", "0@", "0,", "0,,", "0,,0", "0,,0," + "#.#.#", "0#", "0#.", ".#0", "0#.#0", "@0", "0@", "0,", "0,,", "0,,0", "0,,0,", "#,##0E0" }; for (String pattern : invalidPatterns) {