From a29d43d3b5a4453b0cd012ffba2e9b2ec727a3b8 Mon Sep 17 00:00:00 2001 From: James R Date: Wed, 21 Dec 2022 22:45:42 -0800 Subject: [PATCH 1/2] Restore save_p after P_LoadLevel P_LoadLevel calls some functions that save gamedata and unset save_p. --- src/p_saveg.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/p_saveg.c b/src/p_saveg.c index f36d94319..7fb110e49 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -4867,6 +4867,7 @@ static inline boolean P_NetUnArchiveMisc(boolean reloading) { size_t i, j; size_t numTasks; + UINT8 *old_save_p; if (READUINT32(save_p) != ARCHIVEBLOCK_MISC) I_Error("Bad $$$.sav at archive block Misc"); @@ -4909,12 +4910,17 @@ static inline boolean P_NetUnArchiveMisc(boolean reloading) encoremode = (boolean)READUINT8(save_p); + // FIXME: save_p should not be global!!! + old_save_p = save_p; + if (!P_LoadLevel(true, reloading)) { CONS_Alert(CONS_ERROR, M_GetText("Can't load the level!\n")); return false; } + save_p = old_save_p; + // get the time leveltime = READUINT32(save_p); lastmap = READINT16(save_p); From 90903e999fb801d0021764de593a08cc72a09428 Mon Sep 17 00:00:00 2001 From: James R Date: Wed, 21 Dec 2022 23:17:49 -0800 Subject: [PATCH 2/2] Fix MAXAVAILABILITY loop --- src/p_saveg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_saveg.c b/src/p_saveg.c index 7fb110e49..e9b5b237e 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -521,7 +521,7 @@ static void P_NetUnArchivePlayers(void) players[i].skincolor = READUINT8(save_p); players[i].skin = READINT32(save_p); - for (j = 0; i < MAXAVAILABILITY; j++) + for (j = 0; j < MAXAVAILABILITY; j++) { players[i].availabilities[j] = READUINT8(save_p); }