sed: in '/regexp/cmd1;//cmd2', cmd2 should use the same regexp as cmd1
No binary (build failed)
—
(log yok)
| @@ -350,10 +350,16 @@ static int get_address(const char *my_str, int *linenum, regex_t ** regex) | |
| if (*my_str == '\\') | |
| delimiter = *++pos; | |
| next = index_of_next_unescaped_regexp_delim(delimiter, ++pos); | |
| - | temp = copy_parsing_escapes(pos, next); |
| - | *regex = xzalloc(sizeof(regex_t)); |
| - | xregcomp(*regex, temp, G.regex_type); |
| - | free(temp); |
| + | if (next != 0) { |
| + | temp = copy_parsing_escapes(pos, next); |
| + | G.previous_regex_ptr = *regex = xzalloc(sizeof(regex_t)); |
| + | xregcomp(*regex, temp, G.regex_type); |
| + | free(temp); |
| + | } else { |
| + | *regex = G.previous_regex_ptr; |
| + | if (!G.previous_regex_ptr) |
| + | bb_error_msg_and_die("no previous regexp"); |
| + | } |
| /* Move position to next character after last delimiter */ | |
| pos += (next+1); | |
| } | |
| @@ -387,6 +387,12 @@ testing "sed 's///w FILE'" \ | |
| "" \ | |
| "123\nqwe\nasd\n" | |
| + | testing "sed uses previous regexp" \ |
| + | "sed '/w/p;//q'" \ |
| + | "q\nw\nw\n" \ |
| + | "" \ |
| + | "q\nw\ne\nr\n" |
| + | |
| # testing "description" "commands" "result" "infile" "stdin" | |
| exit $FAILCOUNT | |