From dd4b0426ca68dd8d9c0dc4049d7c4d6bffde3eb0 Mon Sep 17 00:00:00 2001 From: NepDisk <16447892+NepDisk@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:47:28 -0400 Subject: [PATCH] Unlink non-mobj and non-precip thinkers when loading and freeing --- src/p_mobj.c | 1 - src/p_saveg.c | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 5f1bebf74..561c29e4e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10521,7 +10521,6 @@ void P_RemoveSavegameMobj(mobj_t *mobj) // free block P_RemoveThinker((thinker_t *)mobj); - R_RemoveMobjInterpolator(mobj); } static CV_PossibleValue_t respawnitemtime_cons_t[] = {{1, "MIN"}, {300, "MAX"}, {0, NULL}}; diff --git a/src/p_saveg.c b/src/p_saveg.c index 51d424759..46090638a 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -3817,7 +3817,11 @@ static void P_NetUnArchiveThinkers(void) if (currentthinker->function.acp1 == (actionf_p1)P_MobjThinker) P_RemoveSavegameMobj((mobj_t *)currentthinker); // item isn't saved, don't remove it else + { + (next->prev = currentthinker->prev)->next = next; + R_DestroyLevelInterpolators(currentthinker); Z_Free(currentthinker); + } } }