From: Sergey Poznyakoff Date: Sat, 28 Aug 2021 06:13:05 +0000 (+0300) Subject: transform: fix replacement of particular pattern instance X-Git-Tag: v1.35~103 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=193eb8f81d8fbf7b1f3bd2b93f60882e56325d72;p=thirdparty%2Ftar.git transform: fix replacement of particular pattern instance This fixes handling of expressions like 's/s/@/2' Fix suggested by Anthony Heading. * src/transform.c (_single_transform_name_to_obstack): Avoid duplicating initial prefix if replace is not needed. --- diff --git a/src/transform.c b/src/transform.c index 2b602353..2cc927e8 100644 --- a/src/transform.c +++ b/src/transform.c @@ -493,9 +493,6 @@ _single_transform_name_to_obstack (struct transform *tf, char *input) disp = rmp[0].rm_eo; - if (rmp[0].rm_so) - obstack_grow (&stk, input, rmp[0].rm_so); - nmatches++; if (tf->match_number && nmatches < tf->match_number) { @@ -504,6 +501,9 @@ _single_transform_name_to_obstack (struct transform *tf, char *input) continue; } + if (rmp[0].rm_so) + obstack_grow (&stk, input, rmp[0].rm_so); + for (segm = tf->repl_head; segm; segm = segm->next) { switch (segm->type)