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)