From: Adrien Gallouët Date: Thu, 4 Dec 2025 10:06:49 +0000 (+0100) Subject: common: use native MultiByteToWideChar (#17738) X-Git-Tag: upstream/0.0.7446~180 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=83c1171529a30c5e018779339690e21430aae372;p=pkg%2Fggml%2Fsources%2Fllama.cpp common: use native MultiByteToWideChar (#17738) `std::codecvt_utf8` is deprecated and produces warnings: common/common.cpp:792:31: warning: 'codecvt_utf8' is deprecated [-Wdeprecated-declarations] 792 | std::wstring_convert> converter; | Signed-off-by: Adrien Gallouët --- diff --git a/common/common.cpp b/common/common.cpp index f07af1d8..a42f4884 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -786,11 +786,29 @@ bool fs_validate_filename(const std::string & filename, bool allow_subdirs) { #include +#ifdef _WIN32 +static std::wstring utf8_to_wstring(const std::string & str) { + if (str.empty()) { + return std::wstring(); + } + + int size = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), (int)str.size(), NULL, 0); + + if (size <= 0) { + return std::wstring(); + } + + std::wstring wstr(size, 0); + MultiByteToWideChar(CP_UTF8, 0, str.c_str(), (int)str.size(), &wstr[0], size); + + return wstr; +} +#endif + // returns true if successful, false otherwise bool fs_create_directory_with_parents(const std::string & path) { #ifdef _WIN32 - std::wstring_convert> converter; - std::wstring wpath = converter.from_bytes(path); + std::wstring wpath = utf8_to_wstring(path); // if the path already exists, check whether it's a directory const DWORD attributes = GetFileAttributesW(wpath.c_str());