From 8a780f6dbc68c1c69b0c04dc58c28cf3f81933ec Mon Sep 17 00:00:00 2001 From: Mihir Patel <82491937+LowLevelLore@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:12:05 +0530 Subject: [PATCH] Robust implementation for getting handles. --- include/spdlog/sinks/ansicolor_sink-inl.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/spdlog/sinks/ansicolor_sink-inl.h b/include/spdlog/sinks/ansicolor_sink-inl.h index 523f7dde..84831961 100644 --- a/include/spdlog/sinks/ansicolor_sink-inl.h +++ b/include/spdlog/sinks/ansicolor_sink-inl.h @@ -119,8 +119,7 @@ SPDLOG_INLINE void ansicolor_sink::print_ccode_( const string_view_t &color_code) const { #ifdef _WIN32 DWORD bytes_written = 0; - HANDLE h = - (target_file_ == stdout) ? GetStdHandle(STD_OUTPUT_HANDLE) : GetStdHandle(STD_ERROR_HANDLE); + HANDLE h = reinterpret_cast(_get_osfhandle(_fileno(target_file_))); // WriteFile bypasses the extra \r injection WriteFile(h, color_code.data(), static_cast(color_code.size()), &bytes_written, nullptr); #else @@ -134,8 +133,7 @@ SPDLOG_INLINE void ansicolor_sink::print_range_(const memory_buf_t size_t end) const { #ifdef _WIN32 DWORD bytes_written = 0; - HANDLE h = - (target_file_ == stdout) ? GetStdHandle(STD_OUTPUT_HANDLE) : GetStdHandle(STD_ERROR_HANDLE); + HANDLE h = reinterpret_cast(_get_osfhandle(_fileno(target_file_))); WriteFile(h, formatted.data() + start, static_cast(end - start), &bytes_written, nullptr); #else