sed: n cmd must reset "we had successful subst" flag. closes bug 1214.
No binary (build failed)
—
(log yok)
| @@ -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; | |
| } | |
| @@ -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 | |