diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 7ac4ee19322..cadaacef8bc 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -745,11 +745,6 @@ bool QtcProcess::canReadLine() const return d->m_process->canReadLine(); } -bool QtcProcess::atEnd() const -{ - return d->m_process->atEnd(); -} - QString QtcProcess::locateBinary(const QString &binary) { const QByteArray path = qgetenv("PATH"); diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index b79dd3f4303..36a1c6185f3 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -173,7 +173,6 @@ public: void close(); void setReadChannel(QProcess::ProcessChannel channel); bool canReadLine() const; - bool atEnd() const; QIODevice *ioDevice(); // FIXME: Remove. diff --git a/src/plugins/cppcheck/cppcheckrunner.cpp b/src/plugins/cppcheck/cppcheckrunner.cpp index 51ecc0bd71f..458cccd3b81 100644 --- a/src/plugins/cppcheck/cppcheckrunner.cpp +++ b/src/plugins/cppcheck/cppcheckrunner.cpp @@ -163,14 +163,14 @@ void CppcheckRunner::readOutput() if (!m_isRunning) // workaround for QTBUG-30929 handleStarted(); - m_process->setReadChannel(QProcess::StandardOutput); - - while (!m_process->atEnd() && m_process->canReadLine()) { - QString line = QString::fromUtf8(m_process->readLine()); - if (line.endsWith('\n')) - line.chop(1); - m_tool.parseOutputLine(line); - } + const QByteArray output = m_process->readAllStandardOutput(); + int start = 0; + int end; + do { + end = output.indexOf('\n', start); + m_tool.parseOutputLine(QString::fromUtf8(output.mid(start, end - start))); + start = end + 1; + } while (end >= 0); } void CppcheckRunner::readError() @@ -178,14 +178,14 @@ void CppcheckRunner::readError() if (!m_isRunning) // workaround for QTBUG-30929 handleStarted(); - m_process->setReadChannel(QProcess::StandardError); - - while (!m_process->atEnd() && m_process->canReadLine()) { - QString line = QString::fromUtf8(m_process->readLine()); - if (line.endsWith('\n')) - line.chop(1); - m_tool.parseErrorLine(line); - } + const QByteArray output = m_process->readAllStandardError(); + int start = 0; + int end; + do { + end = output.indexOf('\n', start); + m_tool.parseErrorLine(QString::fromUtf8(output.mid(start, end - start))); + start = end + 1; + } while (end >= 0); } void CppcheckRunner::handleStarted()