From 18617668a02444e3591598cf2f0ff1f5783fd4e6 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 2 Aug 2018 15:49:02 +0200 Subject: [PATCH] AutoTest: Avoid crash in illegal state While debugging tests we rely on some states of the debugger. If anything goes wrong we might end in an illegal state on our side as well. This would then result in a crash. Avoid nullptr access and try to recover from illegal state. Change-Id: If8ca396a6e456d2f37777eba86f320643fbcd275 Reviewed-by: David Schulz --- src/plugins/autotest/testrunner.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp index 923149c5a09..ef92b911dc8 100644 --- a/src/plugins/autotest/testrunner.cpp +++ b/src/plugins/autotest/testrunner.cpp @@ -239,7 +239,8 @@ void TestRunner::cancelCurrent(TestRunner::CancelReason reason) void TestRunner::onProcessFinished() { - if (m_currentConfig) { + if (m_executingTests && QTC_GUARD(m_currentConfig)) { + QTC_CHECK(m_fakeFutureInterface); m_fakeFutureInterface->setProgressValue(m_fakeFutureInterface->progressValue() + m_currentConfig->testCaseCount()); if (!m_fakeFutureInterface->isCanceled()) { @@ -258,6 +259,10 @@ void TestRunner::onProcessFinished() } resetInternalPointers(); + if (!m_fakeFutureInterface) { + QTC_ASSERT(!m_executingTests, m_executingTests = false); + return; + } if (!m_selectedTests.isEmpty() && !m_fakeFutureInterface->isCanceled()) scheduleNext(); else