diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-11-02 08:23:36 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-11-02 08:23:36 +1100 |
commit | bea100bde9ccdb574c1ab207a7cd179a5063e046 (patch) | |
tree | 647a423bdd3ab31f4e2e3b7cf203a7d60f8f068c /source/base/StarConfiguration.cpp | |
parent | 0497048b444056248be156c73cba694ca30a81dd (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.cpp | 10 |
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); } } |