Skip to content

Commit

Permalink
Merge branch 'v1.x' of https://github.com/gabime/spdlog into v1.x
Browse files Browse the repository at this point in the history
  • Loading branch information
gabime committed Nov 8, 2024
2 parents d343d41 + fe4f995 commit 68f6ec7
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
6 changes: 3 additions & 3 deletions include/spdlog/details/os-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -483,12 +483,12 @@ SPDLOG_INLINE void utf8_to_wstrbuf(string_view_t str, wmemory_buf_t &target) {

// find the size to allocate for the result buffer
int result_size =
::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str.data(), str_size, NULL, 0);
::MultiByteToWideChar(CP_UTF8, 0, str.data(), str_size, NULL, 0);

if (result_size > 0) {
target.resize(result_size);
result_size = ::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str.data(), str_size,
target.data(), result_size);
result_size = ::MultiByteToWideChar(CP_UTF8, 0, str.data(), str_size, target.data(),
result_size);
if (result_size > 0) {
assert(result_size == target.size());
return;
Expand Down
1 change: 1 addition & 0 deletions tests/includes.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "spdlog/spdlog.h"
#include "spdlog/async.h"
#include "spdlog/details/fmt_helper.h"
#include "spdlog/details/os.h"

#ifndef SPDLOG_NO_TLS
#include "spdlog/mdc.h"
Expand Down
18 changes: 18 additions & 0 deletions tests/test_misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,3 +167,21 @@ TEST_CASE("default logger API", "[default logger]") {
spdlog::drop_all();
spdlog::set_pattern("%v");
}

#if (defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) || defined(SPDLOG_WCHAR_FILENAMES)) && defined(_WIN32)
TEST_CASE("utf8 to utf16 conversion using windows api", "[windows utf]") {
spdlog::wmemory_buf_t buffer;

spdlog::details::os::utf8_to_wstrbuf("", buffer);
REQUIRE(std::wstring(buffer.data(), buffer.size()) == std::wstring(L""));

spdlog::details::os::utf8_to_wstrbuf("abc", buffer);
REQUIRE(std::wstring(buffer.data(), buffer.size()) == std::wstring(L"abc"));

spdlog::details::os::utf8_to_wstrbuf("\xc3\x28", buffer); // Invalid UTF-8 sequence.
REQUIRE(std::wstring(buffer.data(), buffer.size()) == std::wstring(L"\xfffd("));

spdlog::details::os::utf8_to_wstrbuf("\xe3\x81\xad\xe3\x81\x93", buffer); // "Neko" in hiragana.
REQUIRE(std::wstring(buffer.data(), buffer.size()) == std::wstring(L"\x306d\x3053"));
}
#endif

0 comments on commit 68f6ec7

Please sign in to comment.