diff --git a/src/p_mobj.c b/src/p_mobj.c
index c8adb6f1d69e0cd0e2f51fbba463703613813482..a290bd0749c0550174cba058739f77c0215fb0ba 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -10061,6 +10061,8 @@ static boolean P_FuseThink(mobj_t *mobj)
 	case MT_SPIKE:
 	case MT_WALLSPIKE:
 		P_SetMobjState(mobj, mobj->state->nextstate);
+		if (P_MobjWasRemoved(mobj))
+			return false;
 		mobj->fuse = mobj->spawnpoint ? mobj->spawnpoint->args[0] : mobj->info->speed;
 		break;
 	case MT_NIGHTSCORE:
@@ -10222,6 +10224,9 @@ void P_MobjThinker(mobj_t *mobj)
 	if (mobj->flags2 & MF2_FIRING)
 		P_FiringThink(mobj);
 
+	if (P_MobjWasRemoved(mobj))
+		return;
+
 	if (mobj->type == MT_AMBIENT)
 	{
 		if (leveltime % mobj->health)