summaryrefslogtreecommitdiff
path: root/Src/glob.c
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2005-04-24 18:38:38 +0000
committerBart Schaefer <barts@users.sourceforge.net>2005-04-24 18:38:38 +0000
commit813cb26e40d34cf87093818e42d8fedf86a0ae9a (patch)
tree66918437069847aff022ce6a1ac74516f4255bf9 /Src/glob.c
parent337a2e3bfdc5fc6e8d116442cdd939b2df85f90e (diff)
downloadzsh-813cb26e40d34cf87093818e42d8fedf86a0ae9a.tar.gz
zsh-813cb26e40d34cf87093818e42d8fedf86a0ae9a.zip
21174 adjustments to 21170
Diffstat (limited to 'Src/glob.c')
-rw-r--r--Src/glob.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Src/glob.c b/Src/glob.c
index 06f956ed0..4af70053e 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -2293,6 +2293,8 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr)
* There's no optimization here. */
for (ioff = uml, t = s + l, umlen = 0; t >= s;
t--, ioff--, umlen++) {
+ if (t > s && t[-1] == Meta)
+ t--;
set_pat_start(p, t-s);
if (pattrylen(p, t, s + l - t, umlen, ioff)) {
*sp = get_match_ret(*sp, t - s, l, fl, replstr);
@@ -2308,7 +2310,7 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr)
* move forward along string until we get a match. *
* Again there's no optimisation. */
for (ioff = 0, t = s, umlen = uml; t < s + l;
- ioff++, t++, umlen--) {
+ ioff++, METAINC(t), umlen--) {
set_pat_start(p, t-s);
if (pattrylen(p, t, s + l - t, umlen, ioff)) {
*sp = get_match_ret(*sp, t-s, l, fl, replstr);
@@ -2336,7 +2338,7 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr)
do {
/* loop over all matches for global substitution */
matched = 0;
- for (; t < s + l; t++, ioff++, umlen--) {
+ for (; t < s + l; METAINC(t), ioff++, umlen--) {
/* Find the longest match from this position. */
set_pat_start(p, t-s);
if (pattrylen(p, t, s + l - t, umlen, ioff)) {