]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.027 v7.3.027
authorBram Moolenaar <Bram@vim.org>
Wed, 13 Oct 2010 18:37:41 +0000 (20:37 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 13 Oct 2010 18:37:41 +0000 (20:37 +0200)
Problem:    Opening a file on a network share is very slow.
Solution:   When fixing file name case append "\*" to directory, server and
            network share names. (David Anderson, John Beckett)

src/os_win32.c
src/version.c

index 8c59e099675420119e2bd32eb7997212c4bd3c87..6bfcc2af5282e821887e06d3e0ebf98cae0e5ca1 100644 (file)
@@ -2308,12 +2308,14 @@ fname_case(
     int                len)
 {
     char               szTrueName[_MAX_PATH + 2];
+    char               szTrueNameTemp[_MAX_PATH + 2];
     char               *ptrue, *ptruePrev;
     char               *porig, *porigPrev;
     int                        flen;
     WIN32_FIND_DATA    fb;
     HANDLE             hFind;
     int                        c;
+    int                        slen;
 
     flen = (int)STRLEN(name);
     if (flen == 0 || flen > _MAX_PATH)
@@ -2358,12 +2360,19 @@ fname_case(
        }
        *ptrue = NUL;
 
+       /* To avoid a slow failure append "\*" when searching a directory,
+        * server or network share. */
+       STRCPY(szTrueNameTemp, szTrueName);
+       slen = strlen(szTrueNameTemp);
+       if (*porig == psepc && slen + 2 < _MAX_PATH)
+           STRCPY(szTrueNameTemp + slen, "\\*");
+
        /* Skip "", "." and "..". */
        if (ptrue > ptruePrev
                && (ptruePrev[0] != '.'
                    || (ptruePrev[1] != NUL
                        && (ptruePrev[1] != '.' || ptruePrev[2] != NUL)))
-               && (hFind = FindFirstFile(szTrueName, &fb))
+               && (hFind = FindFirstFile(szTrueNameTemp, &fb))
                                                      != INVALID_HANDLE_VALUE)
        {
            c = *porig;
index bedc601c8416943ef50b909a1fa55eb63582d7af..dde80faee9fa9c9772c993315794e1f0d3cf083c 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    27,
 /**/
     26,
 /**/