# HG changeset patch # User Bram Moolenaar # Date 1326217078 -3600 # Node ID ce6afdc00290520fb2d9677b44a0cbb70bc401e6 # Parent 8baf2fdc5e4036001094bb910c60f101b4903c44 updated for version 7.3.399 Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro Nakadaira) Solution: Ignore wildcard errors when the EW_NOTWILD flag is used. diff --git a/src/misc1.c b/src/misc1.c --- a/src/misc1.c +++ b/src/misc1.c @@ -9103,15 +9103,15 @@ dos_expandpath( } /* compile the regexp into a program */ - if (flags & EW_NOERROR) + if (flags & (EW_NOERROR | EW_NOTWILD)) ++emsg_silent; regmatch.rm_ic = TRUE; /* Always ignore case */ regmatch.regprog = vim_regcomp(pat, RE_MAGIC); - if (flags & EW_NOERROR) + if (flags & (EW_NOERROR | EW_NOTWILD)) --emsg_silent; vim_free(pat); - if (regmatch.regprog == NULL) + if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) { vim_free(buf); return 0; @@ -9179,7 +9179,8 @@ dos_expandpath( * all entries found with "matchname". */ if ((p[0] != '.' || starts_with_dot) && (matchname == NULL - || vim_regexec(®match, p, (colnr_T)0) + || (regmatch.regprog != NULL + && vim_regexec(®match, p, (colnr_T)0)) || ((flags & EW_NOTWILD) && fnamencmp(path + (s - buf), p, e - s) == 0))) { @@ -9419,10 +9420,14 @@ unix_expandpath(gap, path, wildoff, flag else regmatch.rm_ic = FALSE; /* Don't ignore case */ #endif + if (flags & (EW_NOERROR | EW_NOTWILD)) + ++emsg_silent; regmatch.regprog = vim_regcomp(pat, RE_MAGIC); + if (flags & (EW_NOERROR | EW_NOTWILD)) + --emsg_silent; vim_free(pat); - if (regmatch.regprog == NULL) + if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) { vim_free(buf); return 0; @@ -9452,7 +9457,8 @@ unix_expandpath(gap, path, wildoff, flag if (dp == NULL) break; if ((dp->d_name[0] != '.' || starts_with_dot) - && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0) + && ((regmatch.regprog != NULL && vim_regexec(®match, + (char_u *)dp->d_name, (colnr_T)0)) || ((flags & EW_NOTWILD) && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) { diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 399, +/**/ 398, /**/ 397,