From 442ce3e019848538d6fbb45c5185c31e71d56a9d Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 14 Dec 2021 09:09:21 +0100 Subject: [PATCH] Docker: prevent endless loop after shell stopped Change-Id: Id2ee7193ab7b646e85f2a84f673cb3022fec4dba Reviewed-by: hjk --- src/plugins/docker/dockerdevice.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index d1cd9720df4..aa32162c0e4 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -1696,13 +1696,14 @@ QString DockerDevicePrivate::outputForRunInShell(const CommandLine &cmd) const { if (!DockerPlugin::isDaemonRunning().value_or(false)) return {}; - QTC_ASSERT(m_shell, return {}); + QTC_ASSERT(m_shell && m_shell->isRunning(), return {}); QMutexLocker l(&m_shellMutex); m_shell->readAllStandardOutput(); // clean possible left-overs const QByteArray markerWithNewLine("___QC_DOCKER_" + randomHex() + "_OUTPUT_MARKER___\n"); m_shell->write(cmd.toUserOutput().toUtf8() + "\necho -n \"" + markerWithNewLine + "\"\n"); QByteArray output; while (!output.endsWith(markerWithNewLine)) { + QTC_ASSERT(m_shell->isRunning(), return {}); m_shell->waitForReadyRead(); output.append(m_shell->readAllStandardOutput()); }