diff --git a/src/libs/utils/processinterface.h b/src/libs/utils/processinterface.h index 7001537a4da..7bceff4af0d 100644 --- a/src/libs/utils/processinterface.h +++ b/src/libs/utils/processinterface.h @@ -83,7 +83,6 @@ public: virtual void interrupt() = 0; virtual void terminate() = 0; virtual void kill() = 0; - virtual void close() = 0; virtual qint64 write(const QByteArray &data) = 0; @@ -125,7 +124,6 @@ public: void interrupt() override { m_target->interrupt(); } void terminate() override { m_target->terminate(); } void kill() override { m_target->kill(); } - void close() override { m_target->close(); } qint64 write(const QByteArray &data) override { return m_target->write(data); } diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 5b0d6978528..0dbf3e08f1a 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -350,7 +350,6 @@ public: void interrupt() final { ProcessHelper::interruptProcess(m_process); } void terminate() final { ProcessHelper::terminateProcess(m_process); } void kill() final { m_process->kill(); } - void close() final { m_process->close(); } qint64 write(const QByteArray &data) final { return m_process->write(data); } QProcess::ProcessState state() const final { return m_process->state(); } @@ -440,7 +439,6 @@ public: } void terminate() final { m_handle->terminate(); } void kill() final { m_handle->kill(); } - void close() final { m_handle->kill(); } // TODO: is it more like terminate or kill? qint64 write(const QByteArray &data) final { return m_handle->write(data); } QProcess::ProcessState state() const final { return m_handle->state(); } @@ -793,8 +791,8 @@ void QtcProcess::start() processImpl = d->createProcessInterface(); } QTC_ASSERT(processImpl, return); - setProcessInterface(processImpl); d->clearForRun(); + setProcessInterface(processImpl); d->m_process->m_setup->m_commandLine = d->fullCommandLine(); d->m_process->m_setup->m_environment = d->fullEnvironment(); if (processLog().isDebugEnabled()) { @@ -1198,8 +1196,11 @@ qint64 QtcProcess::write(const QByteArray &input) void QtcProcess::close() { - if (d->m_process) - d->m_process->close(); + if (d->m_process) { + d->m_process->disconnect(); + d->m_process.release()->deleteLater(); + } + d->clearForRun(); } QString QtcProcess::locateBinary(const QString &binary) diff --git a/src/libs/utils/terminalprocess_p.h b/src/libs/utils/terminalprocess_p.h index 7770e5fb7d2..63cc4a51ccd 100644 --- a/src/libs/utils/terminalprocess_p.h +++ b/src/libs/utils/terminalprocess_p.h @@ -49,7 +49,6 @@ public: void terminate() final { stopProcess(); } void kill() final { stopProcess(); } - void close() final { stopProcess(); } // intentionally no-op without an assert bool waitForStarted(int) final { return false; }