summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qprocess_win.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-07-18 11:22:17 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-18 15:25:16 +0200
commit5d6dbc66370cfd66a2613e8668415e2adc254b24 (patch)
tree5e31a93957d84edd0ba51e59354ff22a57066f69 /src/corelib/io/qprocess_win.cpp
parent81addcc1edddaefa19080ad90c27df49f92b53a6 (diff)
fix endless loop in QProcess/Win drainOutputPipes
Commit 568f82fba397e06a26b4fd40f074e4432d02d248 was incomplete. If drainOutputPipes detected some readyRead it wouldn't end the loop. Task-number: QTBUG-32354 Change-Id: I4e594f1e148abe9ef36c047a55eee1b22fd5064b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'src/corelib/io/qprocess_win.cpp')
-rw-r--r--src/corelib/io/qprocess_win.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp
index bcc3fe0b0d..f16025752e 100644
--- a/src/corelib/io/qprocess_win.cpp
+++ b/src/corelib/io/qprocess_win.cpp
@@ -630,8 +630,9 @@ bool QProcessPrivate::drainOutputPipes()
if (!stdoutReader && !stderrReader)
return false;
- bool readyReadEmitted = false;
+ bool someReadyReadEmitted = false;
forever {
+ bool readyReadEmitted = false;
bool readOperationActive = false;
if (stdoutReader) {
readyReadEmitted |= stdoutReader->waitForReadyRead(0);
@@ -641,12 +642,13 @@ bool QProcessPrivate::drainOutputPipes()
readyReadEmitted |= stderrReader->waitForReadyRead(0);
readOperationActive |= stderrReader->isReadOperationActive();
}
+ someReadyReadEmitted |= readyReadEmitted;
if (!readOperationActive || !readyReadEmitted)
break;
Sleep(100);
}
- return readyReadEmitted;
+ return someReadyReadEmitted;
}
bool QProcessPrivate::waitForReadyRead(int msecs)