summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editors/sed.c5
-rwxr-xr-xtestsuite/sed.tests6
2 files changed, 9 insertions, 2 deletions
diff --git a/editors/sed.c b/editors/sed.c
index e55bcaf..c2b9e94 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -865,7 +865,7 @@ static void process_files(void)
next_line = get_next_line(&next_gets_char);
/* go through every line in each file */
-again:
+ again:
substituted = 0;
/* Advance to next line. Stop if out of lines. */
@@ -877,7 +877,7 @@ again:
* the '$' address */
next_line = get_next_line(&next_gets_char);
linenum++;
-restart:
+ restart:
/* for every line, go through all the commands */
for (sed_cmd = G.sed_cmd_head.next; sed_cmd; sed_cmd = sed_cmd->next) {
int old_matched, matched;
@@ -1053,6 +1053,7 @@ restart:
pattern_space = next_line;
last_gets_char = next_gets_char;
next_line = get_next_line(&next_gets_char);
+ substituted = 0;
linenum++;
break;
}
diff --git a/testsuite/sed.tests b/testsuite/sed.tests
index 7471ed5..4cdbaa6 100755
--- a/testsuite/sed.tests
+++ b/testsuite/sed.tests
@@ -201,4 +201,10 @@ testing "sed s/xxx/[/" "sed -e 's/xxx/[/'" "[\n" "" "xxx\n"
#testing "sed -g (exhaustive)" "sed -e 's/[[:space:]]*/,/g'" ",1,2,3,4,5," \
# "" "12345"
+# testing "description" "arguments" "result" "infile" "stdin"
+
+testing "sed n command must reset 'substituted' bit" \
+ "sed 's/1/x/;T;n;: next;s/3/y/;t quit;n;b next;: quit;q'" \
+ "0\nx\n2\ny\n" "" "0\n1\n2\n3\n"
+
exit $FAILCOUNT