From 2a510011f178a8c4319f6bebc9ce054265c51785 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Wed, 11 Oct 2023 13:16:02 +0200 Subject: [PATCH] Utils: Send start failed if no ProcessInterface Change-Id: I38cdce9812bcec3240e3fb4f30a1dd266a5515e9 Reviewed-by: Jarek Kobus --- src/libs/utils/process.cpp | 14 +++++++++++++- .../projectexplorer/devicesupport/idevice.cpp | 1 - 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/process.cpp b/src/libs/utils/process.cpp index 0eeeb1721b4..b10ea090dfc 100644 --- a/src/libs/utils/process.cpp +++ b/src/libs/utils/process.cpp @@ -1251,7 +1251,19 @@ void Process::start() } else { processImpl = d->createProcessInterface(); } - QTC_ASSERT(processImpl, return); + + if (!processImpl) { + // This happens if a device does not implement the createProcessInterface() function. + d->m_result = ProcessResult::StartFailed; + d->m_resultData.m_exitCode = 255; + d->m_resultData.m_exitStatus = QProcess::CrashExit; + d->m_resultData.m_errorString = Tr::tr("Failed to create process interface for \"%1\"") + .arg(d->m_setup.m_commandLine.toUserOutput()); + d->m_resultData.m_error = QProcess::FailedToStart; + d->emitGuardedSignal(&Process::done); + return; + } + d->setProcessInterface(processImpl); d->m_state = QProcess::Starting; d->m_process->m_setup = d->m_setup; diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp index 05c013c4bd5..489e6b337e6 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp @@ -290,7 +290,6 @@ FilePath IDevice::searchExecutable(const QString &fileName, const FilePaths &dir ProcessInterface *IDevice::createProcessInterface() const { - QTC_CHECK(false); return nullptr; }