Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/base/StarConfiguration.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-11-02 08:23:36 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2023-11-02 08:23:36 +1100
commitbea100bde9ccdb574c1ab207a7cd179a5063e046 (patch)
tree647a423bdd3ab31f4e2e3b7cf203a7d60f8f068c /source/base/StarConfiguration.cpp
parent0497048b444056248be156c73cba694ca30a81dd (diff)
Setting a configuration value to nil should actually erase it
also configurationVersion set is already checked in Configuration
Diffstat (limited to 'source/base/StarConfiguration.cpp')
-rw-r--r--source/base/StarConfiguration.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/source/base/StarConfiguration.cpp b/source/base/StarConfiguration.cpp
index 81c1212..89ec7fa 100644
--- a/source/base/StarConfiguration.cpp
+++ b/source/base/StarConfiguration.cpp
@@ -46,7 +46,10 @@ void Configuration::set(String const& key, Json const& value) {
if (key == "configurationVersion")
throw ConfigurationException("cannot set configurationVersion");
- m_currentConfig = m_currentConfig.set(key, value);
+ if (value)
+ m_currentConfig = m_currentConfig.set(key, value);
+ else
+ m_currentConfig = m_currentConfig.eraseKey(key);
}
void Configuration::setPath(String const& path, Json const& value) {
@@ -54,7 +57,10 @@ void Configuration::setPath(String const& path, Json const& value) {
if (path.splitAny("[].").get(0) == "configurationVersion")
throw ConfigurationException("cannot set configurationVersion");
- m_currentConfig = m_currentConfig.setPath(path, value);
+ if (value)
+ m_currentConfig = m_currentConfig.setPath(path, value);
+ else
+ m_currentConfig = m_currentConfig.erasePath(path);
}
}