diff --git a/rpcs3/rpcs3qt/config_adapter.cpp b/rpcs3/rpcs3qt/config_adapter.cpp index 5a529e407b..9b5af24fb1 100644 --- a/rpcs3/rpcs3qt/config_adapter.cpp +++ b/rpcs3/rpcs3qt/config_adapter.cpp @@ -3,6 +3,8 @@ #include "config_adapter.h" #include "Emu/system_config.h" +LOG_CHANNEL(cfg_log, "CFG"); + // Helper methods to interact with YAML and the config settings. namespace cfg_adapter { @@ -29,7 +31,18 @@ namespace cfg_adapter YAML::Node get_node(const YAML::Node& node, cfg_location::const_iterator begin, cfg_location::const_iterator end) { - return begin == end ? node : get_node(node[*begin], begin + 1, end); // TODO + if (begin == end) + { + return node; + } + + if (!node || !node.IsMap()) + { + cfg_log.fatal("Node error. A cfg_location does not match its cfg::node"); + return YAML::Node(); + } + + return get_node(node[*begin], begin + 1, end); // TODO } YAML::Node get_node(const YAML::Node& node, cfg_location loc) diff --git a/rpcs3/rpcs3qt/emu_settings.cpp b/rpcs3/rpcs3qt/emu_settings.cpp index 053c7fce31..82b751e237 100644 --- a/rpcs3/rpcs3qt/emu_settings.cpp +++ b/rpcs3/rpcs3qt/emu_settings.cpp @@ -500,12 +500,24 @@ QStringList emu_settings::GetSettingOptions(emu_settings_type type) const std::string emu_settings::GetSettingDefault(emu_settings_type type) const { - return cfg_adapter::get_node(m_defaultSettings, settings_location[type]).Scalar(); + if (auto node = cfg_adapter::get_node(m_defaultSettings, settings_location[type]); node && node.IsScalar()) + { + return node.Scalar(); + } + + cfg_log.fatal("GetSettingDefault(type=%d) could not retrieve the requested node", static_cast(type)); + return ""; } std::string emu_settings::GetSetting(emu_settings_type type) const { - return cfg_adapter::get_node(m_currentSettings, settings_location[type]).Scalar(); + if (auto node = cfg_adapter::get_node(m_currentSettings, settings_location[type]); node && node.IsScalar()) + { + return node.Scalar(); + } + + cfg_log.fatal("GetSetting(type=%d) could not retrieve the requested node", static_cast(type)); + return ""; } void emu_settings::SetSetting(emu_settings_type type, const std::string& val)