forked from qt-creator/qt-creator
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:
@@ -769,6 +769,7 @@ private:
|
|||||||
std::unique_ptr<ProcessInterfaceHandler> m_processHandler;
|
std::unique_ptr<ProcessInterfaceHandler> m_processHandler;
|
||||||
mutable QMutex m_mutex;
|
mutable QMutex m_mutex;
|
||||||
QList<ProcessInterfaceSignal *> m_signals;
|
QList<ProcessInterfaceSignal *> m_signals;
|
||||||
|
Guard m_guard;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProcessPrivate : public QObject
|
class ProcessPrivate : public QObject
|
||||||
@@ -961,6 +962,10 @@ GeneralProcessBlockingImpl::GeneralProcessBlockingImpl(ProcessPrivate *parent)
|
|||||||
|
|
||||||
bool GeneralProcessBlockingImpl::waitForSignal(ProcessSignalType newSignal, QDeadlineTimer timeout)
|
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);
|
m_processHandler->setParent(nullptr);
|
||||||
|
|
||||||
QThread thread;
|
QThread thread;
|
||||||
|
Reference in New Issue
Block a user