foxygit / doom Log in
commit 2cdef9e50991905c1e1c6b61046525c97a8707e4
Author:     Noseey <omega_1986@hotmail.com>
AuthorDate: Mon Mar 24 22:05:15 2025 +0100
Commit:     Noseey <omega_1986@hotmail.com>
CommitDate: Mon Mar 24 22:05:15 2025 +0100

    Heretic: Rework SV_Close and add it to DoLoadGame
---
 src/heretic/doomdef.h |  3 ++-
 src/heretic/g_game.c  |  5 ++++-
 src/heretic/p_saveg.c | 13 +++++++++++--
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/heretic/doomdef.h b/src/heretic/doomdef.h
index 8139a7b3..8d5e13e5 100644
--- a/src/heretic/doomdef.h
+++ b/src/heretic/doomdef.h
@@ -679,7 +679,8 @@ void G_SaveGame(int slot, char *description);
 char *SV_Filename(int slot);
 void SV_Open(char *fileName);
 void SV_OpenRead(char *fileName);
-void SV_Close(char *fileName);
+void SV_WriteSaveGameEOF(void);
+void SV_Close(void);
 void SV_Write(void *buffer, int size);
 void SV_WriteByte(byte val);
 void SV_WriteWord(unsigned short val);
diff --git a/src/heretic/g_game.c b/src/heretic/g_game.c
index 030ed2ff..01bcc4ae 100644
--- a/src/heretic/g_game.c
+++ b/src/heretic/g_game.c
@@ -1714,6 +1714,8 @@ void G_DoLoadGame(void)
     {                           // Missing savegame termination marker
         I_Error("Bad savegame");
     }
+
+    SV_Close();
 }


@@ -2270,7 +2272,8 @@ void G_DoSaveGame(void)
     P_ArchiveWorld();
     P_ArchiveThinkers();
     P_ArchiveSpecials();
-    SV_Close(filename);
+    SV_WriteSaveGameEOF();
+    SV_Close();

     gameaction = ga_nothing;
     savedescription[0] = 0;
diff --git a/src/heretic/p_saveg.c b/src/heretic/p_saveg.c
index d96ced3b..ad3bee19 100644
--- a/src/heretic/p_saveg.c
+++ b/src/heretic/p_saveg.c
@@ -75,14 +75,23 @@ void SV_OpenRead(char *filename)

 //==========================================================================
 //
-// SV_Close
+// SV_WriteSaveGameEOF
 //
 //==========================================================================

-void SV_Close(char *fileName)
+void SV_WriteSaveGameEOF(void)
 {
     SV_WriteByte(SAVE_GAME_TERMINATOR);
+}

+//==========================================================================
+//
+// SV_Close
+//
+//==========================================================================
+
+void SV_Close(void)
+{
     // Enforce the same savegame size limit as in Vanilla Heretic

     if (vanilla_savegame_limit && ftell(SaveGameFP) > SAVEGAMESIZE)