aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2019-12-17 23:27:11 +0100
committerIvan Komissarov <ABBAPOH@gmail.com>2019-12-19 12:09:59 +0000
commit53040c40f143210c171bc4c39affe3a5df935f78 (patch)
tree20910505db95cbb3170209ddd10c3843e469b90f /src
parentac110221332cdae2b7716f886178af27f16d98a3 (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.cpp12
-rw-r--r--src/lib/corelib/tools/settings.h6
-rw-r--r--src/lib/corelib/tools/settingscreator.cpp4
-rw-r--r--src/lib/corelib/tools/settingscreator.h2
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();