From 8c7079dd2486f07a7721eac162b5ae3df6ad5051 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 2 Nov 2016 14:04:40 +0100 Subject: Beautifier: Fix leak of GeneralSettings Direct leak of 24 byte(s) in 1 object(s) allocated from: #0 0x4f06b0 in operator new(unsigned long) (/home/nik/dev/creator/ ut/4.2_asan/bin/qtcreator+0x4f06b0) #1 0x7f4ac0e5d068 in Beautifier::Internal::BeautifierPlugin::initialize(QStringList const&, QString*) /home/nik/dev/creator/ut/4.2_asan/src/plugins/beautifier/ beautifierplugin.cpp:214:25 #2 0x7f4ada1bb769 in ExtensionSystem::Internal::PluginSpecPrivate::initializePlugin() /home/ nik/dev/creator/ut/4.2_asan/src/libs/extensionsystem/pluginspec.cpp: 1001:10 #3 0x7f4ada1694b1 in ExtensionSystem::Internal::PluginManagerPrivate::loadPlugin(ExtensionSystem::PluginSpec*, ExtensionSystem::PluginSpec::State) /home/nik/dev/creator/ut/4.2_asan/ src/libs/extensionsystem/pluginmanager.cpp:1404:9 #4 0x7f4ada15b2b6 in ExtensionSystem::Internal::PluginManagerPrivate::loadPlugins() /home/ nik/dev/creator/ut/4.2_asan/src/libs/extensionsystem/pluginmanager.cpp: 1239:9 #5 0x7f4ada15ac6f in ExtensionSystem::PluginManager::loadPlugins() / home/nik/dev/creator/ut/4.2_asan/src/libs/extensionsystem/ pluginmanager.cpp:362:12 #6 0x50a97c in main /home/nik/dev/creator/ut/4.2_asan/src/app/ main.cpp:517:5 #7 0x7f4ad65b282f in __libc_start_main /build/glibc-Qz8a69/ glibc-2.23/csu/../csu/libc-start.c:291 Change-Id: Iff1fd908d9a59b98e895599b1d73ca16536eee11 Reviewed-by: Orgad Shaneh --- src/plugins/beautifier/beautifierplugin.cpp | 2 +- src/plugins/beautifier/beautifierplugin.h | 3 ++- src/plugins/beautifier/generaloptionspage.cpp | 6 +++--- src/plugins/beautifier/generaloptionspage.h | 13 +++++++------ 4 files changed, 13 insertions(+), 11 deletions(-) (limited to 'src/plugins/beautifier') diff --git a/src/plugins/beautifier/beautifierplugin.cpp b/src/plugins/beautifier/beautifierplugin.cpp index ad2598152cd..41206438821 100644 --- a/src/plugins/beautifier/beautifierplugin.cpp +++ b/src/plugins/beautifier/beautifierplugin.cpp @@ -215,7 +215,7 @@ void BeautifierPlugin::extensionsInitialized() addAutoReleasedObject(object); } - m_generalSettings = new GeneralSettings; + m_generalSettings.reset(new GeneralSettings); auto settingsPage = new GeneralOptionsPage(m_generalSettings, toolIds, this); addAutoReleasedObject(settingsPage); diff --git a/src/plugins/beautifier/beautifierplugin.h b/src/plugins/beautifier/beautifierplugin.h index 8fab2a4e033..b75f34bab0e 100644 --- a/src/plugins/beautifier/beautifierplugin.h +++ b/src/plugins/beautifier/beautifierplugin.h @@ -31,6 +31,7 @@ #include #include +#include namespace Core { class IDocument; @@ -86,7 +87,7 @@ public: private: void updateActions(Core::IEditor *editor = nullptr); QList m_tools; - GeneralSettings *m_generalSettings = nullptr; + QSharedPointer m_generalSettings; QHash m_autoFormatConnections; void formatEditor(TextEditor::TextEditorWidget *editor, const Command &command, int startPos = -1, int endPos = 0); diff --git a/src/plugins/beautifier/generaloptionspage.cpp b/src/plugins/beautifier/generaloptionspage.cpp index b4c620054e9..4f160e320f0 100644 --- a/src/plugins/beautifier/generaloptionspage.cpp +++ b/src/plugins/beautifier/generaloptionspage.cpp @@ -36,7 +36,7 @@ namespace Beautifier { namespace Internal { -GeneralOptionsPageWidget::GeneralOptionsPageWidget(GeneralSettings *settings, +GeneralOptionsPageWidget::GeneralOptionsPageWidget(const QSharedPointer &settings, const QStringList &toolIds, QWidget *parent) : QWidget(parent), ui(new Ui::GeneralOptionsPage), @@ -73,8 +73,8 @@ void GeneralOptionsPageWidget::apply(bool *autoFormatChanged) m_settings->save(); } -GeneralOptionsPage::GeneralOptionsPage(GeneralSettings *settings, const QStringList &toolIds, - QObject *parent) : +GeneralOptionsPage::GeneralOptionsPage(const QSharedPointer &settings, + const QStringList &toolIds, QObject *parent) : IOptionsPage(parent), m_settings(settings), m_toolIds(toolIds) diff --git a/src/plugins/beautifier/generaloptionspage.h b/src/plugins/beautifier/generaloptionspage.h index 2f6d79dd903..3500e7c2db9 100644 --- a/src/plugins/beautifier/generaloptionspage.h +++ b/src/plugins/beautifier/generaloptionspage.h @@ -28,6 +28,7 @@ #include #include +#include #include namespace Beautifier { @@ -42,15 +43,15 @@ class GeneralOptionsPageWidget : public QWidget Q_OBJECT public: - explicit GeneralOptionsPageWidget(GeneralSettings *settings, const QStringList &toolIds, - QWidget *parent = nullptr); + explicit GeneralOptionsPageWidget(const QSharedPointer &settings, + const QStringList &toolIds, QWidget *parent = nullptr); virtual ~GeneralOptionsPageWidget(); void restore(); void apply(bool *autoFormatChanged); private: Ui::GeneralOptionsPage *ui; - GeneralSettings *m_settings; + QSharedPointer m_settings; }; class GeneralOptionsPage : public Core::IOptionsPage @@ -58,8 +59,8 @@ class GeneralOptionsPage : public Core::IOptionsPage Q_OBJECT public: - explicit GeneralOptionsPage(GeneralSettings *settings, const QStringList &toolIds, - QObject *parent = nullptr); + explicit GeneralOptionsPage(const QSharedPointer &settings, + const QStringList &toolIds, QObject *parent = nullptr); QWidget *widget() override; void apply() override; void finish() override; @@ -69,7 +70,7 @@ signals: private: QPointer m_widget; - GeneralSettings *m_settings; + QSharedPointer m_settings; QStringList m_toolIds; }; -- cgit v1.2.3