From cc804d0dc6c2c565ce9df63ae8557e2696eb2d59 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Mon, 25 Apr 2016 19:18:28 +0200
Subject: [PATCH] Handle carriage return

---
 src/libstore/build.cc | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 3830d7a67..97433821a 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;
-- 
GitLab