- // Continue with Latin if necessary.
- if (!sink.seenAll()) {
- ures_getAllItemsWithFallback(resource.getAlias(), gNumberElementsLatnSymbols, sink, status);
- if (U_FAILURE(status)) { return; }
+ // Continue with Latin if necessary.
+ if (!sink.seenAll()) {
+ ures_getAllItemsWithFallback(curRes, gNumberElementsLatnSymbols, sink, status);
+ if (U_FAILURE(status)) { return; }
+ }
+
+ // for Apple rdar://problem/54886964 (the whole "if" statement)
+ // There are certain symbols that are language-dependent and shouldn't inherit from
+ // the country fallback resource. Clear the resource sink's "seen" flag for those
+ // symbols so that they can inherit from the regular resource on the next trip through
+ // this loop.
+ if (curRes == countryFallbackResource.getAlias()) {
+ sink.seenSymbol[kPlusSignSymbol] = FALSE;
+ sink.seenSymbol[kMinusSignSymbol] = FALSE;
+ sink.seenSymbol[kPercentSymbol] = FALSE;
+ sink.seenSymbol[kCurrencySymbol] = FALSE;
+ sink.seenSymbol[kIntlCurrencySymbol] = FALSE;
+ sink.seenSymbol[kExponentialSymbol] = FALSE;
+ sink.seenSymbol[kInfinitySymbol] = FALSE;
+ sink.seenSymbol[kNaNSymbol] = FALSE;
+ }