aboutsummaryrefslogtreecommitdiff
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 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;