From 516369594f475f93df290d6488c2eccd99618023 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Tue, 24 Jun 2014 12:28:02 -0500 Subject: [PATCH] Store ini sections in a std::list (rather than vector) to prevent unexpected pointer invalidation with use of GetOrCreateSection. --- Source/Core/Common/IniFile.cpp | 4 ++-- Source/Core/Common/IniFile.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/Core/Common/IniFile.cpp b/Source/Core/Common/IniFile.cpp index 6159c2897d..da9d99e250 100644 --- a/Source/Core/Common/IniFile.cpp +++ b/Source/Core/Common/IniFile.cpp @@ -233,7 +233,7 @@ IniFile::Section* IniFile::GetOrCreateSection(const std::string& sectionName) if (!section) { sections.push_back(Section(sectionName)); - section = §ions[sections.size() - 1]; + section = §ions.back(); } return section; } @@ -323,7 +323,7 @@ bool IniFile::GetLines(const std::string& sectionName, std::vector* void IniFile::SortSections() { - std::sort(sections.begin(), sections.end()); + sections.sort(); } bool IniFile::Load(const std::string& filename, bool keep_current_data) diff --git a/Source/Core/Common/IniFile.h b/Source/Core/Common/IniFile.h index 1d006b802f..3ff7e39794 100644 --- a/Source/Core/Common/IniFile.h +++ b/Source/Core/Common/IniFile.h @@ -5,6 +5,7 @@ #pragma once #include +#include #include #include #include @@ -116,7 +117,7 @@ public: Section* GetOrCreateSection(const std::string& section); private: - std::vector
sections; + std::list
sections; const Section* GetSection(const std::string& section) const; Section* GetSection(const std::string& section);