From 7fb2e6633e35b43aa09382da14b10d8b273cde57 Mon Sep 17 00:00:00 2001
From: toasterbabe <rollerorbital@gmail.com>
Date: Mon, 25 Sep 2017 20:35:04 +0100
Subject: [PATCH] Fix a crash.

---
 src/m_menu.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/m_menu.c b/src/m_menu.c
index 3a6a3156d..fe768fce3 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -2151,6 +2151,8 @@ static void M_GoBack(INT32 choice)
 		if ((currentMenu->prevMenu == &MainDef) && (currentMenu == &SP_TimeAttackDef || currentMenu == &SP_NightsAttackDef))
 		{
 			// D_StartTitle does its own wipe, since GS_TIMEATTACK is now a complete gamestate.
+			Z_Free(levelselect.rows);
+			levelselect.rows = NULL;
 			menuactive = false;
 			D_StartTitle();
 		}
@@ -4279,6 +4281,12 @@ static void M_HandleLevelPlatter(INT32 choice)
 
 	if (exitmenu)
 	{
+		if (gamestate != GS_TIMEATTACK)
+		{
+			Z_Free(levelselect.rows);
+			levelselect.rows = NULL;
+		}
+
 		if (currentMenu->prevMenu)
 		{
 			M_SetupNextMenu(currentMenu->prevMenu);
@@ -4287,9 +4295,6 @@ static void M_HandleLevelPlatter(INT32 choice)
 		else
 			M_ClearMenus(true);
 
-		Z_Free(levelselect.rows);
-		levelselect.rows = NULL;
-
 		Z_Free(char_notes);
 		char_notes = NULL;
 	}