From 6ede503aa385fb6948b8700e352ae3b29eebda6b Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 15 Sep 2016 12:34:15 +0200 Subject: [PATCH] Clang: Soft assert creation of a job Change-Id: I59af185fe2942eb4cd191692c56e6449610312e3 Reviewed-by: David Schulz --- .../clangbackend/ipcsource/clangjobs.cpp | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/tools/clangbackend/ipcsource/clangjobs.cpp b/src/tools/clangbackend/ipcsource/clangjobs.cpp index 7626055eea6..bd5a982d014 100644 --- a/src/tools/clangbackend/ipcsource/clangjobs.cpp +++ b/src/tools/clangbackend/ipcsource/clangjobs.cpp @@ -92,24 +92,25 @@ JobRequests Jobs::runJobs(const JobRequests &jobsRequests) bool Jobs::runJob(const JobRequest &jobRequest) { - if (IAsyncJob *asyncJob = IAsyncJob::create(jobRequest.type)) { - JobContext context(jobRequest, &m_documents, &m_unsavedFiles, &m_client); - asyncJob->setContext(context); + IAsyncJob *asyncJob = IAsyncJob::create(jobRequest.type); + QTC_ASSERT(asyncJob, return false); - if (const IAsyncJob::AsyncPrepareResult prepareResult = asyncJob->prepareAsyncRun()) { - qCDebug(jobsLog) << "Running" << jobRequest - << "with TranslationUnit" << prepareResult.translationUnitId; + JobContext context(jobRequest, &m_documents, &m_unsavedFiles, &m_client); + asyncJob->setContext(context); - asyncJob->setFinishedHandler([this](IAsyncJob *asyncJob){ onJobFinished(asyncJob); }); - const QFuture future = asyncJob->runAsync(); + if (const IAsyncJob::AsyncPrepareResult prepareResult = asyncJob->prepareAsyncRun()) { + qCDebug(jobsLog) << "Running" << jobRequest + << "with TranslationUnit" << prepareResult.translationUnitId; - const RunningJob runningJob{jobRequest, prepareResult.translationUnitId, future}; - m_running.insert(asyncJob, runningJob); - return true; - } else { - qCDebug(jobsLog) << "Preparation failed for " << jobRequest; - delete asyncJob; - } + asyncJob->setFinishedHandler([this](IAsyncJob *asyncJob){ onJobFinished(asyncJob); }); + const QFuture future = asyncJob->runAsync(); + + const RunningJob runningJob{jobRequest, prepareResult.translationUnitId, future}; + m_running.insert(asyncJob, runningJob); + return true; + } else { + qCDebug(jobsLog) << "Preparation failed for " << jobRequest; + delete asyncJob; } return false;