From 7bd445fb8389f6867159448f8829d96f00e6c171 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 17 Sep 2016 17:21:35 +0200 Subject: [PATCH] Don't crash if FontManager::getByName returns NULL (Fixes #3552) --- apps/openmw/mwgui/bookpage.cpp | 7 +++++-- apps/openmw/mwgui/formatting.cpp | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwgui/bookpage.cpp b/apps/openmw/mwgui/bookpage.cpp index dbd829176f..0f412042b7 100644 --- a/apps/openmw/mwgui/bookpage.cpp +++ b/apps/openmw/mwgui/bookpage.cpp @@ -275,9 +275,12 @@ struct TypesetBookImpl::Typesetter : BookTypesetter if (i->match (fontName, fontColour, fontColour, fontColour, 0)) return &*i; - StyleImpl & style = *mBook->mStyles.insert (mBook->mStyles.end (), StyleImpl ()); + MyGUI::IFont* font = MyGUI::FontManager::getInstance().getByName(fontName); + if (!font) + throw std::runtime_error(std::string("can't find font ") + fontName); - style.mFont = MyGUI::FontManager::getInstance().getByName(fontName); + StyleImpl & style = *mBook->mStyles.insert (mBook->mStyles.end (), StyleImpl ()); + style.mFont = font; style.mHotColour = fontColour; style.mActiveColour = fontColour; style.mNormalColour = fontColour; diff --git a/apps/openmw/mwgui/formatting.cpp b/apps/openmw/mwgui/formatting.cpp index 6a8145e970..b7e24a7ee8 100644 --- a/apps/openmw/mwgui/formatting.cpp +++ b/apps/openmw/mwgui/formatting.cpp @@ -413,7 +413,10 @@ namespace MWGui int TextElement::currentFontHeight() const { std::string fontName(mTextStyle.mFont == "Default" ? MyGUI::FontManager::getInstance().getDefaultFont() : mTextStyle.mFont); - return MyGUI::FontManager::getInstance().getByName(fontName)->getDefaultHeight(); + MyGUI::IFont* font = MyGUI::FontManager::getInstance().getByName(fontName); + if (!font) + return 0; + return font->getDefaultHeight(); } int TextElement::getHeight()