diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java index cf48e2f98f8..cccd3a8e3d3 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CompactDecimalDataCache.java @@ -136,6 +136,9 @@ class CompactDecimalDataCache { } else { r = r.getWithFallback(resourcePath); } + if (r == null) { + return null; + } int size = r.getSize(); Data result = new Data( new long[MAX_DIGITS], diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java index bab02387121..6c9c7c2a207 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/CompactDecimalFormatTest.java @@ -108,6 +108,13 @@ public class CompactDecimalFormatTest extends TestFmwk { public void TestEnglishShort() { checkLocale(ULocale.ENGLISH, CompactStyle.SHORT, EnglishTestData); } + + public void TestNoLongStyleInCLDR() { + NumberFormat cdf = + NumberFormat.getCompactDecimalInstance( + ULocale.forLanguageTag("ar_EG"), CompactStyle.LONG); + assertEquals("Missing PatternsLong", "5K", cdf.format(5000)); + } public void TestSerbianShort() { checkLocale(ULocale.forLanguageTag("sr"), CompactStyle.SHORT, SerbianTestDataShort);