aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/sed.test2
-rw-r--r--toys/posix/sed.c2
2 files changed, 1 insertions, 3 deletions
diff --git a/tests/sed.test b/tests/sed.test
index 34dfa161..6b27fff8 100755
--- a/tests/sed.test
+++ b/tests/sed.test
@@ -72,8 +72,6 @@ testing "aci" \
"sed -e '3a boom' -e '/hre/i bang' -e '3a whack' -e '3c bong'" \
"one\ntwo\nbang\nbong\nboom\nwhack\nfour\n" "" \
"one\ntwo\nthree\nfour\n"
-# TODO: next test is broken on new-ish debian/bash with never-ending
-# output of `sed: short write: Broken pipe`.
testing "b loop" "sed ':woo;=;b woo' | head -n 5" '1\n1\n1\n1\n1\n' "" "X"
testing "b skip" "sed -n '2b zap;d;:zap;p'" "two\n" "" "one\ntwo\nthree"
testing "b end" "sed -n '2b;p'" "one\nthree" "" "one\ntwo\nthree"
diff --git a/toys/posix/sed.c b/toys/posix/sed.c
index 0be2165e..5e516249 100644
--- a/toys/posix/sed.c
+++ b/toys/posix/sed.c
@@ -600,7 +600,7 @@ writenow:
}
} else if (c=='=') {
sprintf(toybuf, "%ld", TT.count);
- emit(toybuf, strlen(toybuf), 1);
+ if (emit(toybuf, strlen(toybuf), 1)) break;
}
command = command->next;