From e10af1eb70e8c8bc90b8c902931f9229d86b474f Mon Sep 17 00:00:00 2001 From: NepDisk Date: Tue, 22 Apr 2025 22:21:17 -0400 Subject: [PATCH] Fix rare crash in K_SetRespawnAtNextWaypoint --- src/k_kart.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 5d0e3703c..62233f1aa 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8661,17 +8661,22 @@ static void K_FudgeRespawn(player_t *player, const waypoint_t *const waypoint) void K_SetRespawnAtNextWaypoint(player_t * player) { - mobj_t *currentwaypoint = player->currentwaypoint->mobj; - mobj_t *safewaypoint = player->nextwaypoint->mobj; - angle_t respawnangle = R_PointToAngle2(currentwaypoint->x, currentwaypoint->y, safewaypoint->x, safewaypoint->y); + mobj_t *currentwaypoint; + mobj_t *safewaypoint; + angle_t respawnangle; // Safety :P - if (!safewaypoint || !currentwaypoint) + if (!player->currentwaypoint || !player->nextwaypoint) { // Better safe then sorry. + CONS_Alert(CONS_WARNING, M_GetText("Tried to respawn at invalid waypoint!\n")); return; } + currentwaypoint = player->currentwaypoint->mobj; + safewaypoint = player->nextwaypoint->mobj; + respawnangle = R_PointToAngle2(currentwaypoint->x, currentwaypoint->y, safewaypoint->x, safewaypoint->y); + player->pflags |= PF_TRUSTWAYPOINTS; player->starposttime = player->realtime; player->starpostz = (safewaypoint->spawnpoint->z + 15) >> FRACBITS;