From be2cfddb1701548281202fa5c75148587ba053a4 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 21 May 2017 12:05:46 +0200 Subject: [PATCH] - handle the case where SBARINFO only contains a mugshot definition and fall back to the current statusbarclass if creating an SBARINFO-based statusbar fails. --- src/g_statusbar/sbarinfo.cpp | 3 +-- src/g_statusbar/shared_sbar.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/g_statusbar/sbarinfo.cpp b/src/g_statusbar/sbarinfo.cpp index 1846ecbc6..d048ffc0e 100644 --- a/src/g_statusbar/sbarinfo.cpp +++ b/src/g_statusbar/sbarinfo.cpp @@ -1576,8 +1576,7 @@ DEFINE_ACTION_FUNCTION(DSBarInfo, GetProtrusion) DBaseStatusBar *CreateCustomStatusBar(int scriptno) { auto script = SBarInfoScript[scriptno]; - if (script == NULL) - I_FatalError("Tried to create a status bar with no script!"); + if (script == nullptr) return nullptr; auto sbar = (DBaseStatusBar*)PClass::FindClass("SBarInfoWrapper")->CreateNew(); auto core = new DSBarInfo(sbar, script); diff --git a/src/g_statusbar/shared_sbar.cpp b/src/g_statusbar/shared_sbar.cpp index 4b2b1e727..2710c5156 100644 --- a/src/g_statusbar/shared_sbar.cpp +++ b/src/g_statusbar/shared_sbar.cpp @@ -303,6 +303,15 @@ void ST_CreateStatusBar(bool bTitleLevel) { StatusBar = CreateCustomStatusBar(SCRIPT_DEFAULT); } + // SBARINFO failed so try the current statusbarclass again. + if (StatusBar == nullptr) + { + auto cls = PClass::FindClass(gameinfo.statusbarclass); + if (cls != nullptr) + { + StatusBar = (DBaseStatusBar *)cls->CreateNew(); + } + } } if (StatusBar == nullptr) {