Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/gui-bugfix-readOffset-outOfBounds' into cleanup-gui

Cyamond 5 gadi atpakaļ
vecāks
revīzija
cb3d459c46
1 mainītis faili ar 17 papildinājumiem un 5 dzēšanām
  1. 17 5
      gui/src/qmlhandler.cpp

+ 17 - 5
gui/src/qmlhandler.cpp

@@ -88,18 +88,22 @@ void QMLHandler::readPipeLoop() {
     if (inPipeStatus.revents & POLLIN) {
       readOffset += read(inpipefd[0], buf + readOffset, 1);
 
+      // We need this once we receive minimized JSON from the CLI
+      /*if(buf[readOffset-1] == '\n') {
+        pollCount = 10;
+      } else {
+        pollCount = 0;
+      }*/
       pollCount = 0;
 
     } else {
       pollCount++;
     }
 
-    if (pollCount > 9 && buf[0]) {
-      buf[1024] = 0;
-      buf[strlen(buf)] = 0;
+    if (pollCount > 9 && readOffset > 0) {
+      buf[strnlen(buf, 1024)] = 0;
 
-      string cleanBuffer = buf + strcspn(buf, "\n") + 1;
-      string receivedData = cleanBuffer.substr(0, cleanBuffer.size() - 1);
+      string receivedData = buf;
 
       emit log(QString::fromStdString(receivedData));
       qInfo() << QString::fromStdString(receivedData);
@@ -108,6 +112,14 @@ void QMLHandler::readPipeLoop() {
       pollCount = 0;
       readOffset = 0;
     }
+
+    // Fixme
+    if (readOffset >= 1024) {
+      qInfo() << "Fixme: QMLHandler::readPipeLoop() readOffset too high!!!";
+      readOffset = 0;
+      pollCount = 0;
+      memset(buf, 0, 1025);
+    }
   }
 }