From a570e77509522e8c149a797643a9e5e169d91b5a Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@users.noreply.github.com>
Date: Fri, 20 Jan 2023 17:10:25 +0100
Subject: [PATCH] - clear menuDelegate in case of an error in MENUDEF parsing.

---
 source/common/menu/menu.cpp    | 6 ++++++
 source/common/menu/menudef.cpp | 4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/source/common/menu/menu.cpp b/source/common/menu/menu.cpp
index c5890080c..67ed85a6e 100644
--- a/source/common/menu/menu.cpp
+++ b/source/common/menu/menu.cpp
@@ -924,10 +924,16 @@ void M_Init (void)
 	}
 	catch (CVMAbortException &err)
 	{
+		menuDelegate = nullptr;
 		err.MaybePrintMessage();
 		Printf(PRINT_NONOTIFY | PRINT_BOLD, "%s", err.stacktrace.GetChars());
 		I_FatalError("Failed to initialize menus");
 	}
+	catch (...)
+	{
+		menuDelegate = nullptr;
+		throw;
+	}
 	M_CreateMenus();
 }
 
diff --git a/source/common/menu/menudef.cpp b/source/common/menu/menudef.cpp
index 7076f8b7b..4fbeeb0bb 100644
--- a/source/common/menu/menudef.cpp
+++ b/source/common/menu/menudef.cpp
@@ -150,13 +150,13 @@ void DeinitMenus()
 			pair->Value = nullptr;
 		}
 	}
-	MenuDescriptors.Clear();
-	OptionValues.Clear();
 	if (menuDelegate)
 	{
 		menuDelegate->Destroy();
 		menuDelegate = nullptr;
 	}
+	MenuDescriptors.Clear();
+	OptionValues.Clear();
 }
 
 FTextureID GetMenuTexture(const char* const name)