diff --git a/Source/Core/Common/Config/Layer.cpp b/Source/Core/Common/Config/Layer.cpp index ee5d5e2ad6..1e17372c82 100644 --- a/Source/Core/Common/Config/Layer.cpp +++ b/Source/Core/Common/Config/Layer.cpp @@ -57,8 +57,8 @@ bool Layer::DeleteKey(System system, const std::string& section_name, const std: Section* Layer::GetSection(System system, const std::string& section_name) { for (auto& section : m_sections[system]) - if (!strcasecmp(section.m_name.c_str(), section_name.c_str())) - return §ion; + if (!strcasecmp(section->m_name.c_str(), section_name.c_str())) + return section.get(); return nullptr; } @@ -68,10 +68,10 @@ Section* Layer::GetOrCreateSection(System system, const std::string& section_nam if (!section) { if (m_layer == LayerType::Meta) - m_sections[system].emplace_back(RecursiveSection(m_layer, system, section_name)); + m_sections[system].emplace_back(std::make_unique(m_layer, system, section_name)); else - m_sections[system].emplace_back(Section(m_layer, system, section_name)); - section = &m_sections[system].back(); + m_sections[system].emplace_back(std::make_unique
(m_layer, system, section_name)); + section = m_sections[system].back().get(); } return section; } @@ -113,7 +113,7 @@ bool Layer::IsDirty() const { return std::any_of(m_sections.begin(), m_sections.end(), [](const auto& system) { return std::any_of(system.second.begin(), system.second.end(), - [](const auto& section) { return section.IsDirty(); }); + [](const auto& section) { return section->IsDirty(); }); }); } @@ -121,7 +121,7 @@ void Layer::ClearDirty() { std::for_each(m_sections.begin(), m_sections.end(), [](auto& system) { std::for_each(system.second.begin(), system.second.end(), - [](auto& section) { section.ClearDirty(); }); + [](auto& section) { section->ClearDirty(); }); }); } @@ -140,8 +140,8 @@ Section* RecursiveLayer::GetOrCreateSection(System system, const std::string& se Section* section = Layer::GetSection(system, section_name); if (!section) { - m_sections[system].emplace_back(RecursiveSection(m_layer, system, section_name)); - section = &m_sections[system].back(); + m_sections[system].emplace_back(std::make_unique(m_layer, system, section_name)); + section = m_sections[system].back().get(); } return section; } diff --git a/Source/Core/Common/Config/Layer.h b/Source/Core/Common/Config/Layer.h index ade534ce02..2606990ec6 100644 --- a/Source/Core/Common/Config/Layer.h +++ b/Source/Core/Common/Config/Layer.h @@ -14,7 +14,7 @@ namespace Config { -using LayerMap = std::map>; +using LayerMap = std::map>>; class ConfigLayerLoader { diff --git a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp index c073cfcf2e..76ce494bc7 100644 --- a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp @@ -73,8 +73,8 @@ public: for (const auto& section : system.second) { - const std::string section_name = section.GetName(); - const Config::SectionValueMap& section_values = section.GetValues(); + const std::string section_name = section->GetName(); + const Config::SectionValueMap& section_values = section->GetValues(); IniFile::Section* ini_section = ini.GetOrCreateSection(section_name); diff --git a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp index 92a423e9b7..6e15ce9a30 100644 --- a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp @@ -391,10 +391,10 @@ void INIGameConfigLayerLoader::Save(Config::Layer* config_layer) { for (const auto& section : system.second) { - for (const auto& value : section.GetValues()) + for (const auto& value : section->GetValues()) { const auto ini_location = - GetINILocationFromConfig({system.first, section.GetName(), value.first}); + GetINILocationFromConfig({system.first, section->GetName(), value.first}); if (ini_location.first.empty() && ini_location.second.empty()) continue;