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;