diff options
author | Denys Vlasenko | 2019-05-13 16:29:34 +0200 |
---|---|---|
committer | Denys Vlasenko | 2019-05-13 16:30:39 +0200 |
commit | 0545bfa841540a0d7d7e2953bc205eda64144c2e (patch) | |
tree | eff3d12359575675aefd94eca2d501fc2ebdcfbc | |
parent | 15021f393d3d19d689028fceb5c35da930059430 (diff) | |
download | busybox-0545bfa841540a0d7d7e2953bc205eda64144c2e.zip busybox-0545bfa841540a0d7d7e2953bc205eda64144c2e.tar.gz |
sed: fix /regex/,+N match triggering only once, closes 11871
function old new delta
process_files 2235 2246 +11
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | editors/sed.c | 2 | ||||
-rwxr-xr-x | testsuite/sed.tests | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/editors/sed.c b/editors/sed.c index bb39de1..57d3dda 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -1097,6 +1097,8 @@ static void process_files(void) int old_matched, matched; old_matched = sed_cmd->in_match; + if (!old_matched) + sed_cmd->end_line = sed_cmd->end_line_orig; /* Determine if this command matches this line: */ diff --git a/testsuite/sed.tests b/testsuite/sed.tests index 675cb4f..67ff87e 100755 --- a/testsuite/sed.tests +++ b/testsuite/sed.tests @@ -361,6 +361,12 @@ testing "sed /regex/,+N{...} addresses work" \ "" \ "1\n2\n3\n4\n5\n" +testing "sed /regex/,+N{...} addresses work 2" \ + "sed -n '/a/,+1 p'" \ + "a\n1\na\n2\na\n3\n" \ + "" \ + "a\n1\nc\nc\na\n2\na\n3\n" + testing "sed /regex/,+N{...} -i works" \ "cat - >input2; sed /^4/,+2{d} -i input input2; echo \$?; cat input input2; rm input2" \ "0\n""1\n2\n3\n7\n8\n""1\n2\n7\n8\n" \ |