sed: fix breakage added by zero length match code
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
c35545a100
commit
84406e459b
@ -767,7 +767,7 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
|
|||||||
* second is "" before "d", third is "" after "d".
|
* second is "" before "d", third is "" after "d".
|
||||||
* Second match is NOT replaced!
|
* Second match is NOT replaced!
|
||||||
*/
|
*/
|
||||||
if (prev_match_empty || start != 0) {
|
if (prev_match_empty || start != 0 || start != end) {
|
||||||
dbg("inserting replacement at %d in '%s'", start, line);
|
dbg("inserting replacement at %d in '%s'", start, line);
|
||||||
do_subst_w_backrefs(line, sed_cmd->string);
|
do_subst_w_backrefs(line, sed_cmd->string);
|
||||||
} else {
|
} else {
|
||||||
|
@ -302,6 +302,10 @@ testing "sed zero chars match/replace advances correctly 2" \
|
|||||||
"sed 's [^ .]* x g'" \
|
"sed 's [^ .]* x g'" \
|
||||||
"x x.x\n" "" " a.b\n"
|
"x x.x\n" "" " a.b\n"
|
||||||
|
|
||||||
|
testing "sed zero chars match/replace logic must not falsely trigger here" \
|
||||||
|
"sed 's/a/A/g'" \
|
||||||
|
"_AAA1AA\n" "" "_aaa1aa\n"
|
||||||
|
|
||||||
# testing "description" "commands" "result" "infile" "stdin"
|
# testing "description" "commands" "result" "infile" "stdin"
|
||||||
|
|
||||||
exit $FAILCOUNT
|
exit $FAILCOUNT
|
||||||
|
Loading…
Reference in New Issue
Block a user