about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/build.cc19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 3830d7a671e8..97433821af58 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2935,18 +2935,13 @@ void DerivationGoal::handleChildOutput(int fd, const string & data)
             return;
         }
 
-        for (size_t pos = 0; true; ) {
-            auto newline = data.find('\n', pos);
-
-            if (newline == std::string::npos) {
-                currentLogLine.append(data, pos, std::string::npos);
-                break;
-            }
-
-            currentLogLine.append(data, pos, newline - pos);
-            flushLine();
-            pos = newline + 1;
-        }
+        for (auto c : data)
+            if (c == '\r')
+                currentLogLine.clear(); // FIXME: not quite right
+            else if (c == '\n')
+                flushLine();
+            else
+                currentLogLine += c;
 
         if (bzLogFile) {
             int err;