From fe75a21bef192b052c0f41cd57cde030da0c9c43 Mon Sep 17 00:00:00 2001 From: Hanicef <gustaf@hanicef.me> Date: Sat, 10 Feb 2024 19:40:27 +0100 Subject: [PATCH 1/2] Fix segfault when trying to access mo->player->mo from SpawnMobj hook --- src/p_mobj.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/p_mobj.c b/src/p_mobj.c index 28dd9304f..4b59b51aa 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10865,6 +10865,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type, ...) // when spawning MT_PLAYER, set mobj->player before calling MobjSpawn hook to prevent P_RemoveMobj from succeeding on player mobj. va_start(args, type); mobj->player = va_arg(args, player_t *); + mobj->player->mo = mobj; va_end(args); } From d0277b1799e52cce95f359cbb6a125c1883f9508 Mon Sep 17 00:00:00 2001 From: Hanicef <gustaf@hanicef.me> Date: Sat, 10 Feb 2024 20:19:45 +0100 Subject: [PATCH 2/2] fixup! Fix segfault when trying to access mo->player->mo from SpawnMobj hook --- src/p_mobj.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 4b59b51aa..6035a19ab 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11784,7 +11784,6 @@ void P_SpawnPlayer(INT32 playernum) // MT_PLAYER cannot be removed, so this shouldn't be able to return NULL. mobj = P_SpawnMobj(0, 0, 0, MT_PLAYER, p); I_Assert(mobj != NULL); - p->mo = mobj; mobj->angle = 0;