From 1dabd752672635ce818050a77ae1a71cbf75f912 Mon Sep 17 00:00:00 2001 From: Johannes Lorenz <1042576+JohannesLorenz@users.noreply.github.com> Date: Fri, 5 Nov 2021 17:30:27 +0100 Subject: [PATCH] Fixes #6186: No segfaults with future lmmsrc.xml version (#6208) --- src/core/ConfigManager.cpp | 3 ++- src/core/DataFile.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/ConfigManager.cpp b/src/core/ConfigManager.cpp index b6cff1eed..1a1724292 100644 --- a/src/core/ConfigManager.cpp +++ b/src/core/ConfigManager.cpp @@ -139,7 +139,8 @@ void ConfigManager::upgrade() } // Runs all necessary upgrade methods - std::for_each( UPGRADE_METHODS.begin() + m_configVersion, UPGRADE_METHODS.end(), + std::size_t max = std::min(static_cast(m_configVersion), UPGRADE_METHODS.size()); + std::for_each( UPGRADE_METHODS.begin() + max, UPGRADE_METHODS.end(), [this](UpgradeMethod um) { (this->*um)(); diff --git a/src/core/DataFile.cpp b/src/core/DataFile.cpp index 82694b7da..a4e33443f 100644 --- a/src/core/DataFile.cpp +++ b/src/core/DataFile.cpp @@ -1762,7 +1762,8 @@ void DataFile::upgrade_defaultTripleOscillatorHQ() void DataFile::upgrade() { // Runs all necessary upgrade methods - std::for_each( UPGRADE_METHODS.begin() + m_fileVersion, UPGRADE_METHODS.end(), + std::size_t max = std::min(static_cast(m_fileVersion), UPGRADE_METHODS.size()); + std::for_each( UPGRADE_METHODS.begin() + max, UPGRADE_METHODS.end(), [this](UpgradeMethod um) { (this->*um)();