From 1ee96e982a6f93f88e276847b0bae4c5918fb7fb Mon Sep 17 00:00:00 2001 From: Wiebe Cazemier Date: Mon, 22 Nov 2021 21:54:35 +0100 Subject: [PATCH] Fix crash on config reload when there is no config --- configfileparser.cpp | 7 +++++++ configfileparser.h | 4 +++- mainapp.cpp | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/configfileparser.cpp b/configfileparser.cpp index 168f332..a4040c1 100644 --- a/configfileparser.cpp +++ b/configfileparser.cpp @@ -445,5 +445,12 @@ void ConfigFileParser::loadFile(bool test) } } +std::unique_ptr ConfigFileParser::moveSettings() +{ + std::unique_ptr tmp = std::move(settings); + settings.reset(new Settings); + return tmp; +} + diff --git a/configfileparser.h b/configfileparser.h index 325ffda..0cc9ac3 100644 --- a/configfileparser.h +++ b/configfileparser.h @@ -44,6 +44,8 @@ class ConfigFileParser std::set validKeys; std::set validListenKeys; + std::unique_ptr settings; + void testKeyValidity(const std::string &key, const std::set &validKeys) const; void checkFileExistsAndReadable(const std::string &key, const std::string &pathToCheck, ssize_t max_size = std::numeric_limits::max()) const; void checkFileOrItsDirWritable(const std::string &filepath) const; @@ -51,7 +53,7 @@ public: ConfigFileParser(const std::string &path); void loadFile(bool test); - std::unique_ptr settings; + std::unique_ptr moveSettings(); }; #endif // CONFIGFILEPARSER_H diff --git a/mainapp.cpp b/mainapp.cpp index 2b5d00b..42ba645 100644 --- a/mainapp.cpp +++ b/mainapp.cpp @@ -628,7 +628,7 @@ void MainApp::loadConfig() // Atomic loading, first test. confFileParser->loadFile(true); confFileParser->loadFile(false); - settings = std::move(confFileParser->settings); + settings = confFileParser->moveSettings(); if (settings->listeners.empty()) { -- libgit2 0.21.4