From 48fd9d60b685d9e23e980736b9ac4d133c16e9f2 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 11 Dec 2013 15:17:22 +0100 Subject: [PATCH] Updater: Fix crash on exit Make sure we wait for the updater thread before deleting the object. Change-Id: I1bcc2c7d7f4567a3bd1bad393e039ee0e45a24ec Reviewed-by: Fawzi Mohamed Reviewed-by: Eike Ziller --- src/plugins/updateinfo/updateinfoplugin.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index eb09d92c2ac..2882cf8bb06 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;