aboutsummaryrefslogtreecommitdiff
path: root/jim-regexp.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2020-05-04 15:02:19 +1000
committerSteve Bennett <steveb@workware.net.au>2020-05-04 21:57:37 +1000
commita942eef12415e0b53e04279259dd92cca4d444f0 (patch)
tree34edc849d5b2b528d3986e3782bbb44261f6b75f /jim-regexp.c
parentac35b8a6ec417f75b5ec86ca64ea1614a8170a38 (diff)
downloadjimtcl-a942eef12415e0b53e04279259dd92cca4d444f0.zip
jimtcl-a942eef12415e0b53e04279259dd92cca4d444f0.tar.gz
jimtcl-a942eef12415e0b53e04279259dd92cca4d444f0.tar.bz2
regsub: Fix regsub -all with \A
regsub -all matches \A against the start of each match, but correctly handle a pattern like ^ which does not advance the match Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-regexp.c')
-rw-r--r--jim-regexp.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/jim-regexp.c b/jim-regexp.c
index b0411f8..880bf33 100644
--- a/jim-regexp.c
+++ b/jim-regexp.c
@@ -540,7 +540,14 @@ int Jim_RegsubCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
n--;
}
- regexec_flags |= REG_NOTBOL;
+ if (pmatch[0].rm_eo == pmatch[0].rm_so) {
+ /* The match did not advance the string, so set REG_NOTBOL to force the next match */
+ regexec_flags = REG_NOTBOL;
+ }
+ else {
+ regexec_flags = 0;
+ }
+
} while (n);
/*