← Commit list

f39c7c0c8

Denis Vlasenko
Denis Vlasenko
2008-02-28
FAILED Duration: 19s

Subject

sed: n cmd must reset "we had successful subst" flag. closes bug 1214.

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

editors/sed.c+3 -2
@@ -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;
}
testsuite/sed.tests+6 -0
@@ -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