diff options
author | Steve Bennett <steveb@workware.net.au> | 2020-05-04 15:02:19 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2020-05-04 21:57:37 +1000 |
commit | a942eef12415e0b53e04279259dd92cca4d444f0 (patch) | |
tree | 34edc849d5b2b528d3986e3782bbb44261f6b75f /jim-regexp.c | |
parent | ac35b8a6ec417f75b5ec86ca64ea1614a8170a38 (diff) | |
download | jimtcl-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.c | 9 |
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); /* |