From f67a6f1692b30fbe1e88b9dc6a67fc7962cb9baf Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 18 Feb 2026 17:52:28 -0800 Subject: [PATCH] Fix three Windows-specific compile errors - logger.cpp: use localtime_s on Windows (reversed arg order vs localtime_r) - process.hpp: drop constexpr on INVALID_PROCESS (INVALID_HANDLE_VALUE is a reinterpret_cast, not valid in constexpr context) - world_packets.hpp: push/pop ERROR macro around CharCreateResult enum to avoid clash with wingdi.h #define ERROR 0 --- include/game/world_packets.hpp | 8 ++++++++ include/platform/process.hpp | 2 +- src/core/logger.cpp | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/game/world_packets.hpp b/include/game/world_packets.hpp index c3e63c5c..ef60f977 100644 --- a/include/game/world_packets.hpp +++ b/include/game/world_packets.hpp @@ -176,6 +176,11 @@ public: // ============================================================ // WoW 3.3.5a ResponseCodes for character creation (from ResponseCodes enum) +// Windows wingdi.h defines ERROR as 0; undefine it for this enum scope. +#ifdef _WIN32 +#pragma push_macro("ERROR") +#undef ERROR +#endif enum class CharCreateResult : uint8_t { // Success codes SUCCESS = 0x2F, // CHAR_CREATE_SUCCESS @@ -224,6 +229,9 @@ enum class CharCreateResult : uint8_t { NAME_RUSSIAN_SILENT_AT_BEGIN_OR_END = 0x66, // CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END NAME_DECLENSION_DOESNT_MATCH = 0x67, // CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME }; +#ifdef _WIN32 +#pragma pop_macro("ERROR") +#endif struct CharCreateData { std::string name; diff --git a/include/platform/process.hpp b/include/platform/process.hpp index 039723d5..0fa9e981 100644 --- a/include/platform/process.hpp +++ b/include/platform/process.hpp @@ -13,7 +13,7 @@ #include using ProcessHandle = HANDLE; - inline constexpr ProcessHandle INVALID_PROCESS = INVALID_HANDLE_VALUE; + inline const ProcessHandle INVALID_PROCESS = INVALID_HANDLE_VALUE; #else #include diff --git a/src/core/logger.cpp b/src/core/logger.cpp index 6073f797..10e52b6f 100644 --- a/src/core/logger.cpp +++ b/src/core/logger.cpp @@ -35,7 +35,11 @@ void Logger::log(LogLevel level, const std::string& message) { now.time_since_epoch()) % 1000; std::tm tm; +#ifdef _WIN32 + localtime_s(&tm, &time); +#else localtime_r(&time, &tm); +#endif // Format: [YYYY-MM-DD HH:MM:SS.mmm] [LEVEL] message std::ostringstream line;