summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2009-02-24 22:36:36 +0100
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2009-02-24 22:36:36 +0100
commit80e89b23a329453e8dda0f3c48053b8fbe4968c1 (patch)
tree38383b57febe36cfe480a055b3fba3dacc28b01c
parent0acae6f8ac1a4e9da928abfc1426ce1f03cb4bd9 (diff)
downloadqt-creator-80e89b23a329453e8dda0f3c48053b8fbe4968c1.tar.gz
optimize output receiver somewhat
-rw-r--r--src/plugins/debugger/gdbengine.cpp9
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();