From 3eb01a3ecd8b064e71d0f9f8ca33573ef5f7a5f4 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sun, 4 Jan 2015 02:46:48 +0000 Subject: [PATCH] main: Stop leaking pointers when we do not enter the main app loop. In the cases where we returned before calling KApplication::exec(), we would end up leaking pointers such as |batchJob|, |window| and |addToArchiveJob|. Fix it by explicitly deleting |window| (since we do not have another QWidget to make it a child of) and making |batchJob| and |addToArchiveJob| be children of our main KApplication so that we do not need to explicitly delete them under any circumstances. --- ark/app/batchextract.cpp | 4 ++-- ark/app/batchextract.h | 2 +- ark/app/extractHereDndPlugin.cpp | 1 - ark/app/main.cpp | 5 +++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ark/app/batchextract.cpp b/ark/app/batchextract.cpp index 9e466350..159845ae 100644 --- a/ark/app/batchextract.cpp +++ b/ark/app/batchextract.cpp @@ -46,8 +46,8 @@ #include #include -BatchExtract::BatchExtract() - : KCompositeJob(0), +BatchExtract::BatchExtract(QObject* parent) + : KCompositeJob(parent), m_autoSubfolder(false), m_preservePaths(true), m_openDestinationAfterExtraction(false) diff --git a/ark/app/batchextract.h b/ark/app/batchextract.h index 12e35254..7fd7f5fb 100644 --- a/ark/app/batchextract.h +++ b/ark/app/batchextract.h @@ -59,7 +59,7 @@ public: /** * Creates a new BatchExtract object. */ - BatchExtract(); + explicit BatchExtract(QObject* parent = 0); /** * Destroys a BatchExtract object. diff --git a/ark/app/extractHereDndPlugin.cpp b/ark/app/extractHereDndPlugin.cpp index 685a6b7d..5d1fdd4e 100644 --- a/ark/app/extractHereDndPlugin.cpp +++ b/ark/app/extractHereDndPlugin.cpp @@ -49,7 +49,6 @@ void ExtractHereDndPlugin::slotTriggered() batchJob->start(); kDebug() << "Started job"; - } ExtractHereDndPlugin::ExtractHereDndPlugin(QObject* parent, const QVariantList&) diff --git a/ark/app/main.cpp b/ark/app/main.cpp index bcd187d2..caf95b63 100644 --- a/ark/app/main.cpp +++ b/ark/app/main.cpp @@ -129,7 +129,7 @@ int main(int argc, char **argv) KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); if (args->isSet("add") || args->isSet("add-to")) { - AddToArchive *addToArchiveJob = new AddToArchive; + AddToArchive *addToArchiveJob = new AddToArchive(&application); application.connect(addToArchiveJob, SIGNAL(result(KJob*)), SLOT(quit()), Qt::QueuedConnection); if (args->isSet("changetofirstpath")) { @@ -157,7 +157,7 @@ int main(int argc, char **argv) addToArchiveJob->start(); } else if (args->isSet("batch")) { - BatchExtract *batchJob = new BatchExtract; + BatchExtract *batchJob = new BatchExtract(&application); application.connect(batchJob, SIGNAL(result(KJob*)), SLOT(quit()), Qt::QueuedConnection); for (int i = 0; i < args->count(); ++i) { @@ -190,6 +190,7 @@ int main(int argc, char **argv) } else { MainWindow *window = new MainWindow; if (!window->loadPart()) { // if loading the part fails + delete window; return -1; }