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)