]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.399 v7.3.399
authorBram Moolenaar <Bram@vim.org>
Tue, 10 Jan 2012 17:37:58 +0000 (18:37 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 10 Jan 2012 17:37:58 +0000 (18:37 +0100)
Problem:    ":cd" doesn't work when the path contains wildcards. (Yukihiro
            Nakadaira)
Solution:   Ignore wildcard errors when the EW_NOTWILD flag is used.

src/misc1.c
src/version.c

index a5a3ad31474f4ad9942fce1361ca8c264e0c129c..1cd7cceee86cf48cee2f145e8c8c78bc0628c2d2 100644 (file)
@@ -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(&regmatch, p, (colnr_T)0)
+                 || (regmatch.regprog != NULL
+                                    && vim_regexec(&regmatch, p, (colnr_T)0))
                  || ((flags & EW_NOTWILD)
                     && fnamencmp(path + (s - buf), p, e - s) == 0)))
        {
@@ -9419,10 +9420,14 @@ unix_expandpath(gap, path, wildoff, flags, didstar)
     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, flags, didstar)
            if (dp == NULL)
                break;
            if ((dp->d_name[0] != '.' || starts_with_dot)
-                && (vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0)
+                && ((regmatch.regprog != NULL && vim_regexec(&regmatch,
+                                            (char_u *)dp->d_name, (colnr_T)0))
                   || ((flags & EW_NOTWILD)
                     && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
            {
index e3a79e294ac4f9722b0a25c966f329784d0904a4..f5e79e513437d989befefcfe0f642ae15fec95c0 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    399,
 /**/
     398,
 /**/