diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2022-10-18 21:59:53 +0300 |
---|---|---|
committer | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2022-10-19 09:12:14 +0300 |
commit | 7edf7435836d044e05cdf0493861c07f4e91d367 (patch) | |
tree | f76d3be9e1230e7cea02f5d423d7a3a430c1abb8 /src/libs/utils/qtcprocess.cpp | |
parent | f1fc14acc9c22f11211bcf9f7184e362a06a8a7b (diff) | |
parent | ada6989079aec2b533774cfff045220392641d31 (diff) |
Merge remote-tracking branch 'origin/9.0'
Change-Id: I5e6cfc111941f9609285e1b802121644fa8cdaac
Diffstat (limited to 'src/libs/utils/qtcprocess.cpp')
-rw-r--r-- | src/libs/utils/qtcprocess.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 1ffbccea6f1..285ba25eb42 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -634,6 +634,8 @@ public: void setProcessInterface(ProcessInterface *process) { + if (m_process) + m_process->disconnect(); m_process.reset(process); m_process->setParent(this); connect(m_process.get(), &ProcessInterface::started, @@ -805,6 +807,14 @@ GeneralProcessBlockingImpl::GeneralProcessBlockingImpl(QtcProcessPrivate *parent // In order to move the process interface into another thread together with handle parent->m_process.get()->setParent(m_processHandler.get()); m_processHandler->setParent(this); + // So the hierarchy looks like: + // QtcProcessPrivate + // | + // +- GeneralProcessBlockingImpl + // | + // +- ProcessInterfaceHandler + // | + // +- ProcessInterface } bool GeneralProcessBlockingImpl::waitForSignal(ProcessSignalType newSignal, int msecs) @@ -998,6 +1008,8 @@ QtcProcess::~QtcProcess() { QTC_ASSERT(!d->m_guard.isLocked(), qWarning("Deleting QtcProcess instance directly from " "one of its signal handlers will lead to crash!")); + if (d->m_process) + d->m_process->disconnect(); delete d; } |