mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-18 21:14:11 +01:00
20522: must-match optimisation in parameter substitution broken
This commit is contained in:
parent
ced347cf3a
commit
c8e70ab5cf
@ -1,3 +1,8 @@
|
||||
2004-10-26 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 20522: Src/glob.c, Test/D02glob.ztst: must-match optimisation
|
||||
was broken for pattern substitutions in parameters.
|
||||
|
||||
2004-10-22 Wayne Davison <wayned@users.sourceforge.net>
|
||||
|
||||
* 20510: Borzenkov Andrey: Src/jobs.c: Fixed the arg to a call
|
||||
|
16
Src/glob.c
16
Src/glob.c
@ -2206,8 +2206,20 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr)
|
||||
repllist = NULL;
|
||||
|
||||
/* perform must-match test for complex closures */
|
||||
if (p->mustoff && !strstr((char *)s, (char *)p + p->mustoff))
|
||||
matched = 0;
|
||||
if (p->mustoff)
|
||||
{
|
||||
/*
|
||||
* Yuk. Probably we should rewrite this whole function to
|
||||
* use an unmetafied test string.
|
||||
*
|
||||
* Use META_HEAPDUP because we need a terminating NULL.
|
||||
*/
|
||||
char *muststr = metafy((char *)p + p->mustoff,
|
||||
p->patmlen, META_HEAPDUP);
|
||||
|
||||
if (!strstr(s, muststr))
|
||||
matched = 0;
|
||||
}
|
||||
|
||||
/* in case we used the prog before... */
|
||||
p->flags &= ~(PAT_NOTSTART|PAT_NOTEND);
|
||||
|
@ -312,3 +312,8 @@
|
||||
[[ "" = "" ]] && echo OK
|
||||
0:Empty strings
|
||||
>OK
|
||||
|
||||
foo="this string has a : colon in it"
|
||||
print ${foo%% #:*}
|
||||
0:Must-match arguments in complex patterns
|
||||
>this string has a
|
||||
|
Loading…
Reference in New Issue
Block a user