OSDN Git Service

optimize output receiver somewhat
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>
Tue, 24 Feb 2009 21:36:36 +0000 (22:36 +0100)
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>
Tue, 24 Feb 2009 21:36:36 +0000 (22:36 +0100)
src/plugins/debugger/gdbengine.cpp

index 66d4ce1..656ade2 100644 (file)
@@ -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();