From 73e2e02b42b2d52fc07b88ceb7f91cf95c5f564f Mon Sep 17 00:00:00 2001 From: Tomas-Zhu <72930792+Tomas-Zhu@users.noreply.github.com> Date: Thu, 21 Mar 2024 18:16:11 +0800 Subject: [PATCH] Fix #3038 (#3044) * Fix #3038 * Fix #3038 again --------- Co-authored-by: Tomas-Zhu --- include/spdlog/details/os-inl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/spdlog/details/os-inl.h b/include/spdlog/details/os-inl.h index 8fb2c7bc..0993c195 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"); } @@ -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); }