summaryrefslogtreecommitdiffstats
path: root/thirdparty/icu4c/common/locmap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/icu4c/common/locmap.cpp')
-rw-r--r--thirdparty/icu4c/common/locmap.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/thirdparty/icu4c/common/locmap.cpp b/thirdparty/icu4c/common/locmap.cpp
index 7a0e90e8bd..e41cfd1027 100644
--- a/thirdparty/icu4c/common/locmap.cpp
+++ b/thirdparty/icu4c/common/locmap.cpp
@@ -1170,7 +1170,7 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
// conversion functionality when available.
#if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API
int32_t len;
- char baseName[ULOC_FULLNAME_CAPACITY] = {};
+ icu::CharString baseName;
const char * mylocaleID = localeID;
// Check any for keywords.
@@ -1189,19 +1189,23 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
else
{
// If the locale ID contains keywords other than collation, just use the base name.
- len = uloc_getBaseName(localeID, baseName, UPRV_LENGTHOF(baseName) - 1, status);
-
- if (U_SUCCESS(*status) && len > 0)
{
- baseName[len] = 0;
- mylocaleID = baseName;
+ icu::CharStringByteSink sink(&baseName);
+ ulocimp_getBaseName(localeID, sink, status);
+ }
+ if (U_SUCCESS(*status) && !baseName.isEmpty())
+ {
+ mylocaleID = baseName.data();
}
}
}
- char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
// this will change it from de_DE@collation=phonebook to de-DE-u-co-phonebk form
- (void)uloc_toLanguageTag(mylocaleID, asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), false, status);
+ icu::CharString asciiBCP47Tag;
+ {
+ icu::CharStringByteSink sink(&asciiBCP47Tag);
+ ulocimp_toLanguageTag(mylocaleID, sink, false, status);
+ }
if (U_SUCCESS(*status))
{