From 8dc8fe53f9b27a27230945a98b08570cfc1b4d0f Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Tue, 1 Oct 2013 11:03:32 +0200 Subject: QProcess/Win: fix crash in drainOutputPipes stdoutReader->waitForReadyRead() can synchronously trigger the deletion of stdoutreader (via signal readyRead(), _q_canReadStandardOutput(), destroyChannel()). Analoguous for stderrReader. Task-number: QTBUG-33730 Change-Id: I8badac53e92a979c437838b2959b4c0445c8de81 Reviewed-by: Friedemann Kleint Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qprocess_win.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/corelib/io') diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp index 291ea319ec..dba9f62b98 100644 --- a/src/corelib/io/qprocess_win.cpp +++ b/src/corelib/io/qprocess_win.cpp @@ -654,11 +654,11 @@ bool QProcessPrivate::drainOutputPipes() bool readOperationActive = false; if (stdoutReader) { readyReadEmitted |= stdoutReader->waitForReadyRead(0); - readOperationActive = stdoutReader->isReadOperationActive(); + readOperationActive = stdoutReader && stdoutReader->isReadOperationActive(); } if (stderrReader) { readyReadEmitted |= stderrReader->waitForReadyRead(0); - readOperationActive |= stderrReader->isReadOperationActive(); + readOperationActive |= stderrReader && stderrReader->isReadOperationActive(); } someReadyReadEmitted |= readyReadEmitted; if (!readOperationActive || !readyReadEmitted) -- cgit v1.2.3