diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2009-02-24 22:36:36 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2009-02-24 22:36:36 +0100 |
commit | 80e89b23a329453e8dda0f3c48053b8fbe4968c1 (patch) | |
tree | 38383b57febe36cfe480a055b3fba3dacc28b01c | |
parent | 0acae6f8ac1a4e9da928abfc1426ce1f03cb4bd9 (diff) | |
download | qt-creator-80e89b23a329453e8dda0f3c48053b8fbe4968c1.tar.gz |
optimize output receiver somewhat
-rw-r--r-- | src/plugins/debugger/gdbengine.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index 66d4ce19f4..656ade277f 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -554,24 +554,29 @@ void GdbEngine::readGdbStandardError() void GdbEngine::readGdbStandardOutput() { + int newstart = 0; + int scan = m_inbuffer.size(); + m_inbuffer.append(m_gdbProc.readAllStandardOutput()); - int newstart = 0; while (newstart < m_inbuffer.size()) { int start = newstart; - int end = m_inbuffer.indexOf('\n', start); + int end = m_inbuffer.indexOf('\n', scan); if (end < 0) { m_inbuffer.remove(0, start); return; } newstart = end + 1; + scan = newstart; if (end == start) continue; + #ifdef Q_OS_WIN if (m_inbuffer.at(end - 1) == '\r') { --end; if (end == start) continue; } + #endif handleResponse(QByteArray::fromRawData(m_inbuffer.constData() + start, end - start)); } m_inbuffer.clear(); |