From 784a04b8ada504e080c5ec1b2b2caaa5d589a3a8 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Fri, 11 Dec 2015 10:58:32 +0100 Subject: [PATCH] Fixed bug in config file overriding. Previously it was silently overwriting the whole default config and relied on hardcoded values for defaults. --- src/Engine/Core/ConfigFile.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Engine/Core/ConfigFile.cpp b/src/Engine/Core/ConfigFile.cpp index 004ebc43..00ab4993 100644 --- a/src/Engine/Core/ConfigFile.cpp +++ b/src/Engine/Core/ConfigFile.cpp @@ -24,8 +24,11 @@ ConfigFile::ConfigFile(std::string path) if (boost::filesystem::exists(m_Path)) { try { boost::property_tree::ini_parser::read_ini(m_Path.string(), m_PTreeOverrides); - for (auto& node : m_PTreeOverrides) { - m_PTreeMerged.put_child(node.first, node.second); + for (auto& topLevelNode : m_PTreeOverrides) { + auto& mergedTopLevelNode = m_PTreeMerged.find(topLevelNode.first); + for (auto& childOverrideNode : topLevelNode.second) { + mergedTopLevelNode->second.put_child(childOverrideNode.first, childOverrideNode.second); + } } } catch (boost::property_tree::ptree_error& e) { LOG_ERROR("Failed to parse \"%s\":\n%s", m_Path.filename().string().c_str(), e.what());