From fde5108e0ff372de7ee1ef3824d31ea643d98167 Mon Sep 17 00:00:00 2001 From: NepDisk <16447892+NepDisk@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:45:34 -0400 Subject: [PATCH] Revert "Attempt to fix use after free bug" This reverts commit 94ac52641f4239a16438397276be344d7606f4d5. --- src/p_mobj.c | 26 ++++++-------------------- src/p_saveg.c | 15 +-------------- 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 252196842..5f1bebf74 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10507,34 +10507,20 @@ void P_RemovePrecipMobj(precipmobj_t *mobj) void P_RemoveSavegameMobj(mobj_t *mobj) { // unlink from sector and block lists - if (((thinker_t *)mobj)->function.acp1 == (actionf_p1)P_NullPrecipThinker) - { - P_UnsetPrecipThingPosition((precipmobj_t *)mobj); + P_UnsetThingPosition(mobj); - if (precipsector_list) - { - P_DelPrecipSeclist(precipsector_list); - precipsector_list = NULL; - } - } - else + // Remove touching_sectorlist from mobj. + if (sector_list) { - // unlink from sector and block lists - P_UnsetThingPosition(mobj); - - // Remove touching_sectorlist from mobj. - if (sector_list) - { - P_DelSeclist(sector_list); - sector_list = NULL; - } + P_DelSeclist(sector_list); + sector_list = NULL; } // stop any playing sound S_StopSound(mobj); // free block - P_RemoveThinkerDelayed((thinker_t *)mobj); // Call directly here since we are calling P_InitThinkers + P_RemoveThinker((thinker_t *)mobj); R_RemoveMobjInterpolator(mobj); } diff --git a/src/p_saveg.c b/src/p_saveg.c index 5743c3d9b..51d424759 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -3195,19 +3195,6 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker) mobj->player->viewz = mobj->player->mo->z + mobj->player->viewheight; } - if (mobj->type == MT_SKYBOX) - { - mtag_t = mobj->movedir; - if (tag < 0 || tag > 15) - { - CONS_Debug(DBG_GAMELOGIC, "LoadMobjThinker: Skybox ID %d of netloaded object is not between 0 and 15!\n", tag); - } - else if (mobj->flags2 & MF2_AMBUSH) - skyboxcenterpnts[tag] = mobj; - else - skyboxviewpnts[tag] = mobj; - } - if (diff2 & MD2_WAYPOINTCAP) P_SetTarget(&waypointcap, mobj); @@ -3827,7 +3814,7 @@ static void P_NetUnArchiveThinkers(void) { next = currentthinker->next; - if (currentthinker->function.acp1 == (actionf_p1)P_MobjThinker || currentthinker->function.acp1 == (actionf_p1)P_NullPrecipThinker) + if (currentthinker->function.acp1 == (actionf_p1)P_MobjThinker) P_RemoveSavegameMobj((mobj_t *)currentthinker); // item isn't saved, don't remove it else Z_Free(currentthinker);