diff options
author | Kai Koehne <kai.koehne@digia.com> | 2013-12-11 15:17:22 +0100 |
---|---|---|
committer | Kai Koehne <kai.koehne@digia.com> | 2013-12-12 12:37:00 +0100 |
commit | 48fd9d60b685d9e23e980736b9ac4d133c16e9f2 (patch) | |
tree | 1c5bae9d4f48e2923b8adb81a5b6818e36d0211a /src/plugins/updateinfo | |
parent | 410ae45c56b442be51b64aaaef3c1dafecbeca34 (diff) | |
download | qt-creator-48fd9d60b685d9e23e980736b9ac4d133c16e9f2.tar.gz |
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.cpp | 12 |
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; |