From 2121bf237701488998c05f5f48923c1feca5986c Mon Sep 17 00:00:00 2001 From: JohnsterID <69278611+JohnsterID@users.noreply.github.com> Date: Sat, 24 Jan 2026 06:54:21 +0000 Subject: [PATCH] bugfix(bitflags): Replace unqualified min() with inline ternary operator i686-w64-mingw32-gcc build broke with commit d38f6925a. Inline ternary works for all builds. Changes: - Replace min(m_bits.size(), sizeof(val) * 8) with inline ternary operator - Avoids dependency on or always.h - Fixes both Generals and GeneralsMD BitFlags.h files This resolves: - MinGW-w64 GCC 14 error: 'min' was not declared in this scope - VC6 error: syntax error : '::' if using std::min - MSVC error: '(' : illegal token on right side of '::' if using std::min Root cause analysis: - Original code used unqualified min() expecting always.h's template - BitFlags.h doesn't include always.h (it's in WWVegas, not GameEngine) - VC6's doesn't have std::min (only min_element) - VC6's has min() macro, but NOMINMAX disables it - Inline ternary is simple, portable, and VC6-compatible --- Generals/Code/GameEngine/Include/Common/BitFlags.h | 2 +- GeneralsMD/Code/GameEngine/Include/Common/BitFlags.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Generals/Code/GameEngine/Include/Common/BitFlags.h b/Generals/Code/GameEngine/Include/Common/BitFlags.h index ed6bee9fd2..db1dfeca9b 100644 --- a/Generals/Code/GameEngine/Include/Common/BitFlags.h +++ b/Generals/Code/GameEngine/Include/Common/BitFlags.h @@ -257,7 +257,7 @@ class BitFlags UnsignedInt toUnsignedInt() const noexcept { UnsignedInt val = 0; - const UnsignedInt count = min(m_bits.size(), sizeof(val) * 8); + const UnsignedInt count = (m_bits.size() < sizeof(val) * 8) ? m_bits.size() : sizeof(val) * 8; for (UnsignedInt i = 0; i < count; ++i) val |= m_bits.test(i) * (1u << i); return val; diff --git a/GeneralsMD/Code/GameEngine/Include/Common/BitFlags.h b/GeneralsMD/Code/GameEngine/Include/Common/BitFlags.h index 0e06ee8d38..216eb7526f 100644 --- a/GeneralsMD/Code/GameEngine/Include/Common/BitFlags.h +++ b/GeneralsMD/Code/GameEngine/Include/Common/BitFlags.h @@ -257,7 +257,7 @@ class BitFlags UnsignedInt toUnsignedInt() const noexcept { UnsignedInt val = 0; - const UnsignedInt count = min(m_bits.size(), sizeof(val) * 8); + const UnsignedInt count = (m_bits.size() < sizeof(val) * 8) ? m_bits.size() : sizeof(val) * 8; for (UnsignedInt i = 0; i < count; ++i) val |= m_bits.test(i) * (1u << i); return val;