From bc0f3dd2f523481d276b4feb5dea230647c35dcf Mon Sep 17 00:00:00 2001 From: Bruno Da Silva Date: Sat, 18 Apr 2026 04:19:56 +0000 Subject: [PATCH 1/4] fix: compiler warnings with potential side effects --- rts/Lua/LuaOpenGLUtils.cpp | 2 ++ rts/Map/SMF/SMFGroundTextures.cpp | 3 +-- rts/Rendering/DepthBufferCopy.cpp | 2 +- rts/Rendering/GL/glHelpers.h | 2 +- rts/Rendering/Textures/Bitmap.cpp | 5 +++-- rts/Rendering/Units/UnitDrawer.cpp | 4 +++- rts/Sim/MoveTypes/MoveDefHandler.cpp | 2 +- rts/Sim/Units/Scripts/CobDeferredCallin.cpp | 3 +-- 8 files changed, 13 insertions(+), 10 deletions(-) diff --git a/rts/Lua/LuaOpenGLUtils.cpp b/rts/Lua/LuaOpenGLUtils.cpp index 4778c65e7b2..ce94175f340 100644 --- a/rts/Lua/LuaOpenGLUtils.cpp +++ b/rts/Lua/LuaOpenGLUtils.cpp @@ -1114,6 +1114,8 @@ void LuaMatTexture::Print(const string& indent) const STRING_CASE(typeName, LUATEX_ICONS_ATLAS0); STRING_CASE(typeName, LUATEX_ICONS_ATLAS1); + STRING_CASE(typeName, LUATEX_LUATEXTUREATLAS); + #undef STRING_CASE } diff --git a/rts/Map/SMF/SMFGroundTextures.cpp b/rts/Map/SMF/SMFGroundTextures.cpp index 16a2db2c526..633ceb0f31a 100644 --- a/rts/Map/SMF/SMFGroundTextures.cpp +++ b/rts/Map/SMF/SMFGroundTextures.cpp @@ -114,8 +114,7 @@ void CSMFGroundTextures::LoadTiles(CSMFMapFile& file) tileMap.clear(); tileMap.resize(smfMap->tileCount); - tiles.clear(); - tiles.resize(tileHeader.numTiles * SMALL_TILE_SIZE); + tiles.assign(static_cast(tileHeader.numTiles) * SMALL_TILE_SIZE, 0); squares.clear(); squares.resize(smfMap->numBigTexX * smfMap->numBigTexY); diff --git a/rts/Rendering/DepthBufferCopy.cpp b/rts/Rendering/DepthBufferCopy.cpp index 71742e7b4f7..5ea101ae6a1 100644 --- a/rts/Rendering/DepthBufferCopy.cpp +++ b/rts/Rendering/DepthBufferCopy.cpp @@ -149,6 +149,6 @@ void DepthBufferCopy::CreateTextureAndFBO(bool ms) depthFBO->Bind(); depthFBO->AttachTexture(depthTexture, target, GL_DEPTH_ATTACHMENT); glDrawBuffer(GL_NONE); - depthFBO->CheckStatus("DEPTH-BUFFER-COPY-FBO" + ms ? "-MULTISAMPLED" : ""); + depthFBO->CheckStatus(ms ? "DEPTH-BUFFER-COPY-FBO-MULTISAMPLED" : "DEPTH-BUFFER-COPY-FBO"); depthFBO->Unbind(); } diff --git a/rts/Rendering/GL/glHelpers.h b/rts/Rendering/GL/glHelpers.h index a071f68b455..97efed174b8 100644 --- a/rts/Rendering/GL/glHelpers.h +++ b/rts/Rendering/GL/glHelpers.h @@ -107,7 +107,7 @@ inline GLuint FetchActiveTextureSlot() { template inline void glSetAny(AttribValuesTupleType&& newValues) { - if constexpr(DedicatedGLFuncPtrPtr) + if constexpr(DedicatedGLFuncPtrPtr != nullptr) { static auto HelperFunc = [](auto&& ... p) { (*DedicatedGLFuncPtrPtr)(std::forward(p)...); diff --git a/rts/Rendering/Textures/Bitmap.cpp b/rts/Rendering/Textures/Bitmap.cpp index 23ad0380a62..db5a7069762 100644 --- a/rts/Rendering/Textures/Bitmap.cpp +++ b/rts/Rendering/Textures/Bitmap.cpp @@ -356,11 +356,11 @@ void ITexMemPool::Init(size_t size) { RECOIL_DETAILED_TRACY_ZONE; if (size == 0) { - if (texMemPool == nullptr || typeid(*texMemPool.get()) != typeid(TexNoMemPool)) + if (dynamic_cast(texMemPool.get()) == nullptr) texMemPool = std::make_unique(); } else { - if (texMemPool == nullptr || typeid(*texMemPool.get()) != typeid( TexMemPool)) + if (dynamic_cast< TexMemPool*>(texMemPool.get()) == nullptr) texMemPool = std::make_unique< TexMemPool>(); } texMemPool->Resize(size); @@ -405,6 +405,7 @@ class BitmapAction { BitmapAction(CBitmap* bmp_) : bmp{ bmp_ } {} + virtual ~BitmapAction() = default; BitmapAction(const BitmapAction& ba) = delete; BitmapAction(BitmapAction&& ba) noexcept = delete; diff --git a/rts/Rendering/Units/UnitDrawer.cpp b/rts/Rendering/Units/UnitDrawer.cpp index c3a8b43c063..a439038dabe 100644 --- a/rts/Rendering/Units/UnitDrawer.cpp +++ b/rts/Rendering/Units/UnitDrawer.cpp @@ -367,8 +367,10 @@ void CUnitDrawerGLSL::DrawUnitMiniMapIcon(TypedRenderBuffer& rb, std::swap(posX, posY); break; + case CMiniMap::ROTATION_0: + break; } - + float x0 = posX - iconSizeX; float x1 = posX + iconSizeX; float y0 = posY - iconSizeY; diff --git a/rts/Sim/MoveTypes/MoveDefHandler.cpp b/rts/Sim/MoveTypes/MoveDefHandler.cpp index c5e5e0bd46c..9a2fc1bc827 100644 --- a/rts/Sim/MoveTypes/MoveDefHandler.cpp +++ b/rts/Sim/MoveTypes/MoveDefHandler.cpp @@ -336,7 +336,7 @@ MoveDef::MoveDef(const LuaTable& moveDefTable): MoveDef() { waterline = std::abs(moveDefTable.GetInt("waterline", defaultWaterline)); overrideUnitWaterline = moveDefTable.GetBool("overrideUnitWaterline", overrideUnitWaterline); } else { - waterline = std::numeric_limits::max(); + waterline = std::numeric_limits::max(); } height = std::max(1, moveDefTable.GetInt("height", defaultHeight)); diff --git a/rts/Sim/Units/Scripts/CobDeferredCallin.cpp b/rts/Sim/Units/Scripts/CobDeferredCallin.cpp index 5646473cd19..434e6e1dd86 100644 --- a/rts/Sim/Units/Scripts/CobDeferredCallin.cpp +++ b/rts/Sim/Units/Scripts/CobDeferredCallin.cpp @@ -12,10 +12,9 @@ CCobDeferredCallin::CCobDeferredCallin(const CUnit* unit, const LuaHashString& hs, const std::vector& dataStack, const int stackStart) - : argCount(argCount), unit(unit), funcName(hs.GetString()), funcHash(hs.GetHash()) + : unit(unit), argCount(std::min(stackStart, MAX_LUA_COB_ARGS)), funcName(hs.GetString()), funcHash(hs.GetHash()) { const int size = static_cast(dataStack.size()); - argCount = std::min(stackStart, MAX_LUA_COB_ARGS); const int start = std::max(0, size - stackStart); const int end = std::min(size, start + argCount); From 09b902eea7a435d7435eada5d5c3766ef99dc4a8 Mon Sep 17 00:00:00 2001 From: Bruno Da Silva Date: Sat, 18 Apr 2026 13:33:24 +0000 Subject: [PATCH 2/4] fix for PathingState.cpp --- rts/Sim/Path/HAPFS/PathingState.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rts/Sim/Path/HAPFS/PathingState.cpp b/rts/Sim/Path/HAPFS/PathingState.cpp index c4779fd5e91..7388bb276f8 100644 --- a/rts/Sim/Path/HAPFS/PathingState.cpp +++ b/rts/Sim/Path/HAPFS/PathingState.cpp @@ -395,7 +395,7 @@ void PathingState::CalcVertexPathCosts(const MoveDef& moveDef, int2 block, unsig // other four directions are stored at the adjacent vertices) auto idx = BlockPosToIdx(block); const uint8_t nodeLinksObsoleteFlags = blockStates.nodeLinksObsoleteFlags[idx] - & (moveDef.allowDirectionalPathing) ? PATH_DIRECTIONS_MASK : PATH_DIRECTIONS_HALF_MASK; + & ((moveDef.allowDirectionalPathing) ? PATH_DIRECTIONS_MASK : PATH_DIRECTIONS_HALF_MASK); int pathdir = 0; for (int checkBit = 1; checkBit <= PATHDIR_LEFT_DOWN_MASK; checkBit <<= 1, ++pathdir) { From b0d3a81366dbd02ee9409ff99ef062e361096ee0 Mon Sep 17 00:00:00 2001 From: Bruno Da Silva Date: Mon, 1 Jun 2026 09:24:53 +0000 Subject: [PATCH 3/4] switch back to int max but with explicit float cast --- rts/Sim/MoveTypes/MoveDefHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rts/Sim/MoveTypes/MoveDefHandler.cpp b/rts/Sim/MoveTypes/MoveDefHandler.cpp index 9a2fc1bc827..2dcd3d7230c 100644 --- a/rts/Sim/MoveTypes/MoveDefHandler.cpp +++ b/rts/Sim/MoveTypes/MoveDefHandler.cpp @@ -336,7 +336,7 @@ MoveDef::MoveDef(const LuaTable& moveDefTable): MoveDef() { waterline = std::abs(moveDefTable.GetInt("waterline", defaultWaterline)); overrideUnitWaterline = moveDefTable.GetBool("overrideUnitWaterline", overrideUnitWaterline); } else { - waterline = std::numeric_limits::max(); + waterline = static_cast(std::numeric_limits::max()); } height = std::max(1, moveDefTable.GetInt("height", defaultHeight)); From 785ec25ae70a3e6540c6a115eb8111ed0847612d Mon Sep 17 00:00:00 2001 From: Bruno Da Silva Date: Mon, 1 Jun 2026 09:38:06 +0000 Subject: [PATCH 4/4] added a quick comment --- rts/Sim/MoveTypes/MoveDefHandler.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rts/Sim/MoveTypes/MoveDefHandler.cpp b/rts/Sim/MoveTypes/MoveDefHandler.cpp index 2dcd3d7230c..eb59743c08e 100644 --- a/rts/Sim/MoveTypes/MoveDefHandler.cpp +++ b/rts/Sim/MoveTypes/MoveDefHandler.cpp @@ -336,6 +336,9 @@ MoveDef::MoveDef(const LuaTable& moveDefTable): MoveDef() { waterline = std::abs(moveDefTable.GetInt("waterline", defaultWaterline)); overrideUnitWaterline = moveDefTable.GetBool("overrideUnitWaterline", overrideUnitWaterline); } else { + // we read as int from configuration but used as float... + // this should probably be changed to float everywhere + // github issue: https://github.com/beyond-all-reason/RecoilEngine/issues/2996 waterline = static_cast(std::numeric_limits::max()); }