From 2b17f1105140398bd0565ba65454da65c35ee443 Mon Sep 17 00:00:00 2001 From: Skyaero <21192585+Skyaero42@users.noreply.github.com> Date: Thu, 13 Nov 2025 12:24:19 +0100 Subject: [PATCH 1/2] fix: Fix incorrect argument used for isInSaveDirectory() - Introduced by: #1808 - Resolves #1847 --- Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp | 2 +- .../Code/GameEngine/Source/GameLogic/System/GameLogic.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp b/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp index 92d3f2bd83..b5e0c0f216 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp @@ -2155,7 +2155,7 @@ void GameLogic::loadMapINI( AsciiString mapName ) // the pristine map name string in order to manipulate and load the right map.ini // for that map from it's original location // - const char* pristineMapName = TheGameState->isInSaveDirectory(filename) + const char* pristineMapName = TheGameState->isInSaveDirectory(mapName.str()) ? TheGameState->getSaveGameInfo()->pristineMapName.str() : mapName.str(); diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp index 59e1c7e6d7..7557fb5cbf 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp @@ -2472,7 +2472,7 @@ void GameLogic::loadMapINI( AsciiString mapName ) // the pristine map name string in order to manipulate and load the right map.ini // for that map from it's original location // - const char* pristineMapName = TheGameState->isInSaveDirectory(filename) + const char* pristineMapName = TheGameState->isInSaveDirectory(mapName.str()) ? TheGameState->getSaveGameInfo()->pristineMapName.str() : mapName.str(); From 808e30f58e540da78a3d6bdd53aa58dc26df7d62 Mon Sep 17 00:00:00 2001 From: Skyaero <21192585+Skyaero42@users.noreply.github.com> Date: Thu, 13 Nov 2025 12:57:20 +0100 Subject: [PATCH 2/2] refactor: Moving string buffers to where they are first used. --- .../Code/GameEngine/Source/GameLogic/System/GameLogic.cpp | 5 ++--- .../Code/GameEngine/Source/GameLogic/System/GameLogic.cpp | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp b/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp index b5e0c0f216..44f527814d 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp @@ -2146,9 +2146,6 @@ void GameLogic::loadMapINI( AsciiString mapName ) return; } - char filename[_MAX_PATH]; - char fullFledgeFilename[_MAX_PATH]; - // // if map name begins with a "SAVE_DIRECTORY\", then the map refers to a map // that has been extracted from a save game file ... in that case we need to get @@ -2159,6 +2156,7 @@ void GameLogic::loadMapINI( AsciiString mapName ) ? TheGameState->getSaveGameInfo()->pristineMapName.str() : mapName.str(); + char filename[_MAX_PATH]; strlcpy(filename, pristineMapName, ARRAY_SIZE(filename)); // sanity @@ -2175,6 +2173,7 @@ void GameLogic::loadMapINI( AsciiString mapName ) *extension = 0; + char fullFledgeFilename[_MAX_PATH]; sprintf(fullFledgeFilename, "%s\\map.ini", filename); if (TheFileSystem->doesFileExist(fullFledgeFilename)) { DEBUG_LOG(("Loading map.ini")); diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp index 7557fb5cbf..1275f07557 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp @@ -2463,9 +2463,6 @@ void GameLogic::loadMapINI( AsciiString mapName ) return; } - char filename[_MAX_PATH]; - char fullFledgeFilename[_MAX_PATH]; - // // if map name begins with a "SAVE_DIRECTORY\", then the map refers to a map // that has been extracted from a save game file ... in that case we need to get @@ -2476,6 +2473,7 @@ void GameLogic::loadMapINI( AsciiString mapName ) ? TheGameState->getSaveGameInfo()->pristineMapName.str() : mapName.str(); + char filename[_MAX_PATH]; strlcpy(filename, pristineMapName, ARRAY_SIZE(filename)); // sanity @@ -2492,6 +2490,7 @@ void GameLogic::loadMapINI( AsciiString mapName ) *extension = 0; + char fullFledgeFilename[_MAX_PATH]; sprintf(fullFledgeFilename, "%s\\map.ini", filename); if (TheFileSystem->doesFileExist(fullFledgeFilename)) { DEBUG_LOG(("Loading map.ini"));