diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index 66d4ce19f424b042cd6fba32c1d913a14fca9d83..656ade277f16b775d3aafe2072e8deceea839c92 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();