diff --git a/source/gui/CGUI.cpp b/source/gui/CGUI.cpp index d38ae7ff80..199b052b50 100644 --- a/source/gui/CGUI.cpp +++ b/source/gui/CGUI.cpp @@ -715,11 +715,7 @@ void CGUI::Xeromyces_ReadObject(XMBElement Element, CXeromyces* pFile, IGUIObjec if (attr.Name == attr_z) ManuallySetZ = true; - const CStr settingName = pFile->GetAttributeString(attr.Name); - if (object->SettingExists(settingName)) - object->SetSettingFromString(settingName, attr.Value.FromUTF8(), false); - else - LOGERROR("GUI: (object: %s) Can't set \"%s\" to \"%s\"", object->GetPresentableName(), settingName, attr.Value); + object->SetSettingFromString(pFile->GetAttributeString(attr.Name), attr.Value.FromUTF8(), false); } // Check if name isn't set, generate an internal name in that case. diff --git a/source/gui/IGUIObject.cpp b/source/gui/IGUIObject.cpp index c0ef85c024..b7442b8c18 100644 --- a/source/gui/IGUIObject.cpp +++ b/source/gui/IGUIObject.cpp @@ -148,7 +148,13 @@ const T& IGUIObject::GetSetting(const CStr& Setting) const bool IGUIObject::SetSettingFromString(const CStr& Setting, const CStrW& Value, const bool SendMessage) { - return m_Settings[Setting]->FromString(Value, SendMessage); + const std::map::iterator it = m_Settings.find(Setting); + if (it == m_Settings.end()) + { + LOGERROR("GUI object '%s' has no property called '%s', can't set parse and set value '%s'", GetPresentableName().c_str(), Setting.c_str(), Value.ToUTF8().c_str()); + return false; + } + return it->second->FromString(Value, SendMessage); } template