From a8c1f7a6374df28e7ca32f674962baf9c3300f11 Mon Sep 17 00:00:00 2001 From: Professor Hastig Date: Thu, 26 Oct 2023 10:42:26 +0200 Subject: [PATCH] always save the map WAD in a savegame's metadata, even if it is from the IWAD Otherwise the savegame loader will not be able to validate an IWAD savegame while the actual level comes from a different file. --- src/g_game.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/g_game.cpp b/src/g_game.cpp index e072d0eee..485980a48 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -1890,12 +1890,12 @@ static bool CheckSingleWad (const char *name, bool &printRequires, bool printwar bool G_CheckSaveGameWads (FSerializer &arc, bool printwarn) { bool printRequires = false; - const char* text; - text = arc.GetString("Game WAD"); + const char *text = arc.GetString("Game WAD"); CheckSingleWad (text, printRequires, printwarn); - text = arc.GetString("Map WAD"); - if (text != nullptr) CheckSingleWad (text, printRequires, printwarn); + const char *text2 = arc.GetString("Map WAD"); + // do not validate the same file twice. + if (text != nullptr && text2 != nullptr && stricmp(text, text2) != 0) CheckSingleWad (text2, printRequires, printwarn); if (printRequires) { @@ -2268,11 +2268,8 @@ static void PutSaveWads (FSerializer &arc) arc.AddString("Game WAD", name); // Name of wad the map resides in - if (fileSystem.GetFileContainer (primaryLevel->lumpnum) > fileSystem.GetIwadNum()) - { - name = fileSystem.GetResourceFileName (fileSystem.GetFileContainer (primaryLevel->lumpnum)); - arc.AddString("Map WAD", name); - } + name = fileSystem.GetResourceFileName (fileSystem.GetFileContainer (primaryLevel->lumpnum)); + arc.AddString("Map WAD", name); } static void PutSaveComment (FSerializer &arc)