From: José Fonseca Date: Sat, 24 Mar 2012 10:06:56 +0000 (+0000) Subject: Process stderr one line at time. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=8fdf56c564b78f24bc4157df7e4480358e66b3e9;p=apitrace Process stderr one line at time. Instead of reading all into memory. Benefit is probably only marginal, but code is equally lean. --- diff --git a/gui/retracer.cpp b/gui/retracer.cpp index 865f61f..fa22011 100644 --- a/gui/retracer.cpp +++ b/gui/retracer.cpp @@ -255,11 +255,11 @@ void RetraceProcess::replayFinished(int exitCode, QProcess::ExitStatus exitStatu } } - QString errStr = m_process->readAllStandardError(); - QStringList errorLines = errStr.split('\n'); + m_process->setReadChannel(QProcess::StandardError); QList errors; - QRegExp regexp("(^\\d+): +(\\b\\w+\\b): (.+$)"); - foreach(QString line, errorLines) { + QRegExp regexp("(^\\d+): +(\\b\\w+\\b): ([^\\r\\n]+)[\\r\\n]*$"); + while (!m_process->atEnd()) { + QString line = m_process->readLine(); if (regexp.indexIn(line) != -1) { ApiTraceError error; error.callIndex = regexp.cap(1).toInt();