Cherry-pick: ticket:13094: Handle empty language subtag in parseTagString().
http://bugs.icu-project.org/trac/changeset/40076
Bug: 36794587
Test: make check
Change-Id: Ica5144252594ddd395a61f55979caadbebc7b007
diff --git a/icu4c/source/common/loclikely.cpp b/icu4c/source/common/loclikely.cpp
index c13b37e..9b378a5 100644
--- a/icu4c/source/common/loclikely.cpp
+++ b/icu4c/source/common/loclikely.cpp
@@ -510,7 +510,7 @@
unknownLanguage);
*langLength = (int32_t)uprv_strlen(lang);
}
- else if (_isIDSeparator(*position)) {
+ if (_isIDSeparator(*position)) {
++position;
}
diff --git a/icu4c/source/test/cintltst/cloctst.c b/icu4c/source/test/cintltst/cloctst.c
index c9c0ec9..bd82c89 100644
--- a/icu4c/source/test/cintltst/cloctst.c
+++ b/icu4c/source/test/cintltst/cloctst.c
@@ -3400,6 +3400,21 @@
}, {
"de_Latn_DE_u_co_phonebk",
"de_Latn_DE_U_CO_PHONEBK"
+ }, {
+ "_Arab@em=emoji",
+ "ar_Arab_EG@em=emoji"
+ }, {
+ "_Latn@em=emoji",
+ "en_Latn_US@em=emoji"
+ }, {
+ "_Latn_DE@em=emoji",
+ "de_Latn_DE@em=emoji"
+ }, {
+ "_Zzzz_DE@em=emoji",
+ "de_Latn_DE@em=emoji"
+ }, {
+ "_DE@em=emoji",
+ "de_Latn_DE@em=emoji"
}
};
@@ -5948,6 +5963,11 @@
{"en-u-baz-ca-islamic-civil", "en@attribute=baz;calendar=islamic-civil", FULL_LENGTH},
{"en-a-bar-u-ca-islamic-civil-x-u-foo", "en@a=bar;calendar=islamic-civil;x=u-foo", FULL_LENGTH},
{"en-a-bar-u-baz-ca-islamic-civil-x-u-foo", "en@a=bar;attribute=baz;calendar=islamic-civil;x=u-foo", FULL_LENGTH},
+ {"und-Arab-u-em-emoji", "_Arab@em=emoji", FULL_LENGTH},
+ {"und-Latn-u-em-emoji", "_Latn@em=emoji", FULL_LENGTH},
+ {"und-Latn-DE-u-em-emoji", "_Latn_DE@em=emoji", FULL_LENGTH},
+ {"und-Zzzz-DE-u-em-emoji", "_Zzzz_DE@em=emoji", FULL_LENGTH},
+ {"und-DE-u-em-emoji", "_DE@em=emoji", FULL_LENGTH},
{NULL, NULL, 0}
};