Process: Detect a recursive call to waitForSignal()

Assert that we don't call it recursively. If so, the waitForSignal()
returns false immediately.

Fixes: QTCREATORBUG-30715
Change-Id: I7195b2b1347f67262cc8ae6db5439f5ddd38b5bb
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Jarek Kobus
2024-04-19 15:45:58 +02:00
parent b7446fca8b
commit 0aa5b86300

View File

@@ -769,6 +769,7 @@ private:
std::unique_ptr<ProcessInterfaceHandler> m_processHandler;
mutable QMutex m_mutex;
QList<ProcessInterfaceSignal *> m_signals;
Guard m_guard;
};
class ProcessPrivate : public QObject
@@ -961,6 +962,10 @@ GeneralProcessBlockingImpl::GeneralProcessBlockingImpl(ProcessPrivate *parent)
bool GeneralProcessBlockingImpl::waitForSignal(ProcessSignalType newSignal, QDeadlineTimer timeout)
{
QTC_ASSERT(!m_guard.isLocked(), qWarning("Process::waitForSignal() called recursively. "
"The call is being ignored."); return false);
GuardLocker locker(m_guard);
m_processHandler->setParent(nullptr);
QThread thread;