From ae4c1e0e8242ed3e00cb5bb780532dcdf55d4846 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Fri, 9 Nov 2018 22:06:53 -0500 Subject: [PATCH] Fix tmthing crash in EndTextPrompt when loading an invalid prompt on level start --- src/f_finale.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index f32e44b57..f120cd756 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -2125,7 +2125,8 @@ void F_EndTextPrompt(boolean forceexec, boolean noexec) boolean promptwasactive = promptactive; promptactive = false; - if (promptwasactive) { + if (promptwasactive) + { if (promptmo && promptmo->player && promptblockcontrols) promptmo->reactiontime = TICRATE/4; // prevent jumping right away // \todo account freeze realtime for this) // \todo reset frozen realtime? @@ -2134,9 +2135,14 @@ void F_EndTextPrompt(boolean forceexec, boolean noexec) // \todo net safety, maybe loop all player thinkers? if ((promptwasactive || forceexec) && !noexec && promptpostexectag) { - P_MapStart(); - P_LinedefExecute(promptpostexectag, promptmo, NULL); - P_MapEnd(); + if (tmthing) // edge case where starting an invalid prompt immediately on level load will make P_MapStart fail + P_LinedefExecute(promptpostexectag, promptmo, NULL); + else + { + P_MapStart(); + P_LinedefExecute(promptpostexectag, promptmo, NULL); + P_MapEnd(); + } } } @@ -2326,6 +2332,4 @@ void F_TextPromptTicker(void) !F_WriteText()) timetonext = !promptblockcontrols; // never show the chevron if we can't toggle pages } - - }