diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2019-12-17 23:27:11 +0100 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2019-12-19 12:09:59 +0000 |
commit | 53040c40f143210c171bc4c39affe3a5df935f78 (patch) | |
tree | 20910505db95cbb3170209ddd10c3843e469b90f /src | |
parent | ac110221332cdae2b7716f886178af27f16d98a3 (diff) |
Use std::unique_ptr for memory management in Settings
Allows to have a defaulted dtor
Change-Id: I73ec187da3a7546a0547d973cae17212404a4e3d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/corelib/tools/settings.cpp | 12 | ||||
-rw-r--r-- | src/lib/corelib/tools/settings.h | 6 | ||||
-rw-r--r-- | src/lib/corelib/tools/settingscreator.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/tools/settingscreator.h | 2 |
4 files changed, 11 insertions, 13 deletions
diff --git a/src/lib/corelib/tools/settings.cpp b/src/lib/corelib/tools/settings.cpp index 7312cd622..fccb9c9b2 100644 --- a/src/lib/corelib/tools/settings.cpp +++ b/src/lib/corelib/tools/settings.cpp @@ -91,8 +91,8 @@ Settings::Settings(const QString &baseDir) : Settings(baseDir, systemSettingsBas Settings::Settings(const QString &baseDir, const QString &systemBaseDir) : m_settings(SettingsCreator(baseDir).getQSettings()), - m_systemSettings(new QSettings(systemBaseDir + QStringLiteral("/qbs.conf"), - QSettings::IniFormat)), + m_systemSettings(std::make_unique<QSettings>(systemBaseDir + QStringLiteral("/qbs.conf"), + QSettings::IniFormat)), m_baseDir(baseDir) { // Actual qbs settings are stored transparently within a group, because QSettings @@ -100,11 +100,7 @@ Settings::Settings(const QString &baseDir, const QString &systemBaseDir) m_settings->beginGroup(QStringLiteral("org/qt-project/qbs")); } -Settings::~Settings() -{ - delete m_settings; - delete m_systemSettings; -} +Settings::~Settings() = default; QVariant Settings::value(const QString &key, Scopes scopes, const QVariant &defaultValue) const { @@ -241,7 +237,7 @@ void Settings::fixupKeys(QStringList &keys) const QSettings *Settings::settingsForScope(Settings::Scope scope) const { - return scope == UserScope ? m_settings : m_systemSettings; + return scope == UserScope ? m_settings.get() : m_systemSettings.get(); } QSettings *Settings::targetForWriting() const diff --git a/src/lib/corelib/tools/settings.h b/src/lib/corelib/tools/settings.h index d4de08490..638216669 100644 --- a/src/lib/corelib/tools/settings.h +++ b/src/lib/corelib/tools/settings.h @@ -45,6 +45,8 @@ #include <QtCore/qstring.h> #include <QtCore/qvariant.h> +#include <memory> + QT_BEGIN_NAMESPACE class QSettings; class QStringList; @@ -94,8 +96,8 @@ private: QSettings *targetForWriting() const; void checkForWriteError(); - QSettings * const m_settings; - QSettings * const m_systemSettings; + const std::unique_ptr<QSettings> m_settings; + const std::unique_ptr<QSettings> m_systemSettings; const QString m_baseDir; Scope m_scopeForWriting = UserScope; }; diff --git a/src/lib/corelib/tools/settingscreator.cpp b/src/lib/corelib/tools/settingscreator.cpp index b7c727cd0..36e67440c 100644 --- a/src/lib/corelib/tools/settingscreator.cpp +++ b/src/lib/corelib/tools/settingscreator.cpp @@ -65,11 +65,11 @@ SettingsCreator::SettingsCreator(QString baseDir) { } -QSettings *SettingsCreator::getQSettings() +std::unique_ptr<QSettings> SettingsCreator::getQSettings() { createQSettings(); migrate(); - return m_settings.release(); + return std::move(m_settings); } void SettingsCreator::migrate() diff --git a/src/lib/corelib/tools/settingscreator.h b/src/lib/corelib/tools/settingscreator.h index 39da80a7f..ab491105c 100644 --- a/src/lib/corelib/tools/settingscreator.h +++ b/src/lib/corelib/tools/settingscreator.h @@ -58,7 +58,7 @@ class SettingsCreator public: SettingsCreator(QString baseDir); - QSettings *getQSettings(); + std::unique_ptr<QSettings> getQSettings(); private: void migrate(); |