Don't delete process directly from process' finished handler

AbstractProcessStep::slotProcessFinished() slot is connected
to m_process finished() signal. We call there
AbstractProcessStep::Private::cleanUp(), and that calls
m_process.reset(), so it invokes m_process d'tor directly.

SshRemoteProcessRunner::handleProcessFinished() slot is
connected to d->m_process finished() signal. We call there
SshRemoteProcessRunner::setState(), and that calls
d->m_process.reset(), so it invokes m_process d'tor directly.

Delete later m_process instead in both cases.

Change-Id: I4a0f2a631b676b57e8bcc3a7878620bc76dc74de
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Jarek Kobus
2022-04-04 14:31:21 +02:00
parent a717ff71f4
commit 4093fbe826
2 changed files with 3 additions and 2 deletions

View File

@@ -286,7 +286,8 @@ void AbstractProcessStep::Private::cleanUp(int exitCode, QProcess::ExitStatus st
const bool returnValue = q->processSucceeded(exitCode, status)
|| m_ignoreReturnValue;
m_process.reset();
if (m_process)
m_process.release()->deleteLater();
// Report result
q->finish(returnValue);