From 6dde874c3203464f76170834234c026e02dc7abc Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Thu, 13 Aug 2015 18:59:03 +0300 Subject: QProcess: discard unwanted output from the child process Drop process output to nullDevice(), if an application does not request forwarding, redirecting or reading from the device channel. This prevents from accumulation of unnecessary data which can not be read. Change-Id: Ia311a8c658a46cf580ffa9484c5369f3fc5f98a7 Reviewed-by: Thiago Macieira Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qprocess.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/corelib/io/qprocess.cpp') diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index dfde5f236d8..cdae149678a 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -2206,6 +2206,16 @@ void QProcessPrivate::start(QIODevice::OpenMode mode) mode &= ~QIODevice::ReadOnly; // not open for reading if (mode == 0) mode = QIODevice::Unbuffered; +#ifndef Q_OS_WINCE + if ((mode & QIODevice::ReadOnly) == 0) { + if (stdoutChannel.type == QProcessPrivate::Channel::Normal) + q->setStandardOutputFile(q->nullDevice()); + if (stderrChannel.type == QProcessPrivate::Channel::Normal + && processChannelMode != QProcess::MergedChannels) + q->setStandardErrorFile(q->nullDevice()); + } +#endif + q->QIODevice::open(mode); stdinChannel.closed = false; -- cgit v1.2.3