From bae2aa65d8e99efbd4643ddb2da3cc71701e5070 Mon Sep 17 00:00:00 2001 From: Fredrik Roubert Date: Tue, 13 Aug 2024 17:01:02 +0200 Subject: [PATCH] ICU-22696 Avoid unnecessary copies of already NUL terminated strings. --- icu4c/source/common/ulocale.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/icu4c/source/common/ulocale.cpp b/icu4c/source/common/ulocale.cpp index aaa17954a393..f2f81bc97109 100644 --- a/icu4c/source/common/ulocale.cpp +++ b/icu4c/source/common/ulocale.cpp @@ -21,7 +21,10 @@ U_NAMESPACE_USE ULocale* ulocale_openForLocaleID(const char* localeID, int32_t length, UErrorCode* err) { if (U_FAILURE(*err)) { return nullptr; } - CharString str(length < 0 ? StringPiece(localeID) : StringPiece(localeID, length), *err); + if (length < 0) { + return EXTERNAL(icu::Locale::createFromName(localeID).clone()); + } + CharString str(localeID, length, *err); // Make a NUL terminated copy. if (U_FAILURE(*err)) { return nullptr; } return EXTERNAL(icu::Locale::createFromName(str.data()).clone()); }