aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/beautifier
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2016-11-02 14:04:40 +0100
committerOrgad Shaneh <orgads@gmail.com>2017-04-18 17:44:45 +0000
commit8c7079dd2486f07a7721eac162b5ae3df6ad5051 (patch)
treeb3ff4a479ced03cc08c2d751435fc61afc092e1e /src/plugins/beautifier
parent659baae9786ceb48a82bbbd11d187994251b97f8 (diff)
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 <orgads@gmail.com>
Diffstat (limited to 'src/plugins/beautifier')
-rw-r--r--src/plugins/beautifier/beautifierplugin.cpp2
-rw-r--r--src/plugins/beautifier/beautifierplugin.h3
-rw-r--r--src/plugins/beautifier/generaloptionspage.cpp6
-rw-r--r--src/plugins/beautifier/generaloptionspage.h13
4 files changed, 13 insertions, 11 deletions
diff --git a/src/plugins/beautifier/beautifierplugin.cpp b/src/plugins/beautifier/beautifierplugin.cpp
index ad2598152c..4120643882 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 8fab2a4e03..b75f34bab0 100644
--- a/src/plugins/beautifier/beautifierplugin.h
+++ b/src/plugins/beautifier/beautifierplugin.h
@@ -31,6 +31,7 @@
#include <QPlainTextEdit>
#include <QPointer>
+#include <QSharedPointer>
namespace Core {
class IDocument;
@@ -86,7 +87,7 @@ public:
private:
void updateActions(Core::IEditor *editor = nullptr);
QList<BeautifierAbstractTool *> m_tools;
- GeneralSettings *m_generalSettings = nullptr;
+ QSharedPointer<GeneralSettings> m_generalSettings;
QHash<QObject*, QMetaObject::Connection> 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 b4c620054e..4f160e320f 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<GeneralSettings> &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<GeneralSettings> &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 2f6d79dd90..3500e7c2db 100644
--- a/src/plugins/beautifier/generaloptionspage.h
+++ b/src/plugins/beautifier/generaloptionspage.h
@@ -28,6 +28,7 @@
#include <coreplugin/dialogs/ioptionspage.h>
#include <QPointer>
+#include <QSharedPointer>
#include <QWidget>
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<GeneralSettings> &settings,
+ const QStringList &toolIds, QWidget *parent = nullptr);
virtual ~GeneralOptionsPageWidget();
void restore();
void apply(bool *autoFormatChanged);
private:
Ui::GeneralOptionsPage *ui;
- GeneralSettings *m_settings;
+ QSharedPointer<GeneralSettings> 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<GeneralSettings> &settings,
+ const QStringList &toolIds, QObject *parent = nullptr);
QWidget *widget() override;
void apply() override;
void finish() override;
@@ -69,7 +70,7 @@ signals:
private:
QPointer<GeneralOptionsPageWidget> m_widget;
- GeneralSettings *m_settings;
+ QSharedPointer<GeneralSettings> m_settings;
QStringList m_toolIds;
};