diff options
Diffstat (limited to 'intl/icu/source/i18n/reldatefmt.cpp')
-rw-r--r-- | intl/icu/source/i18n/reldatefmt.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/intl/icu/source/i18n/reldatefmt.cpp b/intl/icu/source/i18n/reldatefmt.cpp index 1a4da0f0b9..85637cb456 100644 --- a/intl/icu/source/i18n/reldatefmt.cpp +++ b/intl/icu/source/i18n/reldatefmt.cpp @@ -162,14 +162,20 @@ const UnicodeString& RelativeDateTimeCacheData::getAbsoluteUnitString( URelativeDateTimeUnit unit, int32_t pastFutureIndex, int32_t pluralUnit) const { - int32_t style = fStyle; - do { - if (relativeUnitsFormatters[style][unit][pastFutureIndex][pluralUnit] != nullptr) { - return relativeUnitsFormatters[style][unit][pastFutureIndex][pluralUnit]; + while (true) { + int32_t style = fStyle; + do { + if (relativeUnitsFormatters[style][unit][pastFutureIndex][pluralUnit] != nullptr) { + return relativeUnitsFormatters[style][unit][pastFutureIndex][pluralUnit]; + } + style = fallBackCache[style]; + } while (style != -1); + + if (pluralUnit == StandardPlural::OTHER) { + return nullptr; // No formatter found. } - style = fallBackCache[style]; - } while (style != -1); - return nullptr; // No formatter found. + pluralUnit = StandardPlural::OTHER; + } } static UBool getStringWithFallback( |