From e7d125ffecc8de5f408b599af5243593b087393a Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 13 Jan 2022 11:44:08 +0100 Subject: [PATCH] ProcessLauncher: stop awaiting for ready read when finished In case the user called waitForReadyRead() and we have received the finished signal instead (without receiving readyRead signals in meantime), we should interrupt the wait and return false, since there is no point to wait for future readyRead signals from not running process. Change-Id: Ib4a770aea6ed562a5bef197eaa51b20c146842f0 Reviewed-by: hjk Reviewed-by: --- src/libs/utils/launchersocket.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/utils/launchersocket.cpp b/src/libs/utils/launchersocket.cpp index 1dc3b45e328..e4bfed17f0a 100644 --- a/src/libs/utils/launchersocket.cpp +++ b/src/libs/utils/launchersocket.cpp @@ -559,6 +559,9 @@ bool LauncherHandle::waitForSignal(int msecs, CallerHandle::SignalType newSignal return true; if (wasCanceled) return true; // or false? is false only in case of timeout? + const bool finishedSignalFlushed = flushedSignals.contains(CallerHandle::SignalType::Finished); + if (finishedSignalFlushed) + return false; // finish has appeared but we were waiting for other signal } return false; }