From 328730604bd3a91abf33ffdcea15a193352e745c Mon Sep 17 00:00:00 2001 From: Shane Carr Date: Mon, 23 Apr 2018 21:16:24 +0000 Subject: [PATCH] ICU-13634 Fixing grouping size fallback in fast path. X-SVN-Rev: 41262 --- icu4c/source/i18n/decimfmt.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/icu4c/source/i18n/decimfmt.cpp b/icu4c/source/i18n/decimfmt.cpp index 4a42fd18707..b53b82b6a63 100644 --- a/icu4c/source/i18n/decimfmt.cpp +++ b/icu4c/source/i18n/decimfmt.cpp @@ -1239,7 +1239,8 @@ void DecimalFormat::setupFastFormat() { // Grouping (secondary grouping is forbidden in equalsDefaultExceptFastFormat): bool groupingUsed = fProperties->groupingUsed; - bool unusualGroupingSize = fProperties->groupingSize > 0 && fProperties->groupingSize != 3; + int32_t groupingSize = fProperties->groupingSize; + bool unusualGroupingSize = groupingSize > 0 && groupingSize != 3; const UnicodeString& groupingString = fSymbols->getConstSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol); if (groupingUsed && (unusualGroupingSize || groupingString.length() != 1)) { trace("no fast format: grouping\n"); @@ -1278,7 +1279,7 @@ void DecimalFormat::setupFastFormat() { trace("can use fast format!\n"); fCanUseFastFormat = true; fFastData.cpZero = static_cast(codePointZero); - fFastData.cpGroupingSeparator = groupingUsed ? groupingString.charAt(0) : 0; + fFastData.cpGroupingSeparator = groupingUsed && groupingSize == 3 ? groupingString.charAt(0) : 0; fFastData.cpMinusSign = minusSignString.charAt(0); fFastData.minInt = (minInt < 0 || minInt > 127) ? 0 : static_cast(minInt); fFastData.maxInt = (maxInt < 0 || maxInt > 127) ? 127 : static_cast(maxInt); -- 2.50.0