aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/updateinfo
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@digia.com>2013-12-11 15:17:22 +0100
committerKai Koehne <kai.koehne@digia.com>2013-12-12 12:37:00 +0100
commit48fd9d60b685d9e23e980736b9ac4d133c16e9f2 (patch)
tree1c5bae9d4f48e2923b8adb81a5b6818e36d0211a /src/plugins/updateinfo
parent410ae45c56b442be51b64aaaef3c1dafecbeca34 (diff)
Updater: Fix crash on exit
Make sure we wait for the updater thread before deleting the object. Change-Id: I1bcc2c7d7f4567a3bd1bad393e039ee0e45a24ec Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src/plugins/updateinfo')
-rw-r--r--src/plugins/updateinfo/updateinfoplugin.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp
index eb09d92c2a..2882cf8bb0 100644
--- a/src/plugins/updateinfo/updateinfoplugin.cpp
+++ b/src/plugins/updateinfo/updateinfoplugin.cpp
@@ -91,6 +91,9 @@ UpdateInfoPlugin::UpdateInfoPlugin()
UpdateInfoPlugin::~UpdateInfoPlugin()
{
+ d->lastCheckUpdateInfoTask.cancel();
+ d->lastCheckUpdateInfoTask.waitForFinished();
+
delete d;
}
@@ -230,7 +233,14 @@ QDomDocument UpdateInfoPlugin::update()
// start
QProcess updater;
updater.start(d->updaterProgram, QStringList() << d->updaterCheckOnlyArgument);
- updater.waitForFinished();
+ while (updater.state() != QProcess::NotRunning) {
+ if (!updater.waitForFinished(1000)
+ && d->lastCheckUpdateInfoTask.isCanceled()) {
+ updater.kill();
+ updater.waitForFinished(-1);
+ return QDomDocument();
+ }
+ }
// process return value
QDomDocument updates;