From dbd350e6c53d4a1e004fd4a04f4c307215c5b37b Mon Sep 17 00:00:00 2001 From: Tomas-Zhu Date: Tue, 19 Mar 2024 16:35:20 +0800 Subject: [PATCH 1/2] Fix #3038 --- include/spdlog/details/os-inl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/spdlog/details/os-inl.h b/include/spdlog/details/os-inl.h index 8fb2c7bca..f2570dc09 100644 --- a/include/spdlog/details/os-inl.h +++ b/include/spdlog/details/os-inl.h @@ -450,7 +450,7 @@ SPDLOG_INLINE void wstr_to_utf8buf(wstring_view_t wstr, memory_buf_t &target) { } int result_size = static_cast(target.capacity()); - if ((wstr_size + 1) * 2 > result_size) { + if ((wstr_size + 1) * 4 > result_size) { result_size = ::WideCharToMultiByte(CP_UTF8, 0, wstr.data(), wstr_size, NULL, 0, NULL, NULL); } From 341e51a169cd9ad3a5653a9d69f3a42e298186c0 Mon Sep 17 00:00:00 2001 From: Tomas-Zhu Date: Thu, 21 Mar 2024 16:36:13 +0800 Subject: [PATCH 2/2] Fix #3038 again --- include/spdlog/details/os-inl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/spdlog/details/os-inl.h b/include/spdlog/details/os-inl.h index f2570dc09..0993c1959 100644 --- a/include/spdlog/details/os-inl.h +++ b/include/spdlog/details/os-inl.h @@ -439,7 +439,7 @@ SPDLOG_INLINE bool in_terminal(FILE *file) SPDLOG_NOEXCEPT { #if (defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) || defined(SPDLOG_WCHAR_FILENAMES)) && defined(_WIN32) SPDLOG_INLINE void wstr_to_utf8buf(wstring_view_t wstr, memory_buf_t &target) { - if (wstr.size() > static_cast((std::numeric_limits::max)()) / 2 - 1) { + if (wstr.size() > static_cast((std::numeric_limits::max)()) / 4 - 1) { throw_spdlog_ex("UTF-16 string is too big to be converted to UTF-8"); }