зеркало из https://github.com/mozilla/gecko-dev.git
46 строки
1.6 KiB
Diff
46 строки
1.6 KiB
Diff
|
Workaround for https://unicode-org.atlassian.net/browse/ICU-20253
|
||
|
|
||
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1504656
|
||
|
|
||
|
diff --git a/intl/icu/source/i18n/reldatefmt.cpp b/intl/icu/source/i18n/reldatefmt.cpp
|
||
|
--- a/intl/icu/source/i18n/reldatefmt.cpp
|
||
|
+++ b/intl/icu/source/i18n/reldatefmt.cpp
|
||
|
@@ -157,24 +157,30 @@ const UnicodeString& RelativeDateTimeCac
|
||
|
}
|
||
|
|
||
|
// Use fallback cache for SimpleFormatter relativeUnits.
|
||
|
const SimpleFormatter* RelativeDateTimeCacheData::getRelativeDateTimeUnitFormatter(
|
||
|
int32_t fStyle,
|
||
|
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(
|
||
|
const UResourceBundle *resource,
|
||
|
const char *key,
|
||
|
UnicodeString &result,
|
||
|
UErrorCode &status) {
|
||
|
int32_t len = 0;
|