diff -Nurd icu.orig/source/common/uresbund.cpp icu/source/common/uresbund.cpp --- icu.orig/source/common/uresbund.cpp 2022-10-18 20:53:21.000000000 -0400 +++ icu/source/common/uresbund.cpp 2023-02-02 22:17:16.000000000 -0500 @@ -202,7 +202,8 @@ */ static bool getParentLocaleID(char *name, const char *origName, UResOpenType openType) { // early out if the locale ID has a variant code or ends with _ - if (name[uprv_strlen(name) - 1] == '_' || hasVariant(name)) { + size_t nameLen = uprv_strlen(name); + if (!nameLen || name[nameLen - 1] == '_' || hasVariant(name)) { return chopLocale(name); } diff -Nurd icu.orig/source/icudefs.mk.in icu/source/icudefs.mk.in --- icu.orig/source/icudefs.mk.in 2022-10-18 20:53:21.000000000 -0400 +++ icu/source/icudefs.mk.in 2023-02-02 22:16:03.000000000 -0500 @@ -286,13 +286,13 @@ LSTUBDIR = -L$(top_builddir)/stubdata LCTESTFW = -L$(top_builddir)/tools/ctestfw -LIBICUDT = $(LLIBDIR) $(LSTUBDIR) $(ICULIBS_DT) -LIBICUUC = $(LLIBDIR) $(ICULIBS_UC) $(LSTUBDIR) $(ICULIBS_DT) -LIBICUI18N = $(LLIBDIR) $(ICULIBS_I18N) +LIBICUDT = $(LSTUBDIR) $(LLIBDIR) $(ICULIBS_DT) +LIBICUUC = $(LSTUBDIR) $(LLIBDIR) $(ICULIBS_UC) $(ICULIBS_DT) +LIBICUI18N = $(ICULIBS_I18N) LIBICULE = $(ICULEHB_CFLAGS) $(LLIBDIR) $(ICULIBS_LE) LIBICULX = $(LLIBDIR) $(ICULIBS_LX) LIBCTESTFW = $(LCTESTFW) $(ICULIBS_CTESTFW) -LIBICUTOOLUTIL = $(LLIBDIR) $(ICULIBS_TOOLUTIL) +LIBICUTOOLUTIL = $(LSTUBDIR) $(LLIBDIR) $(ICULIBS_TOOLUTIL) LIBICUIO = $(LLIBDIR) $(ICULIBS_IO) # Invoke, set library path for all ICU libraries.