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();