]> granicus.if.org Git - vim/commitdiff
updated for version 7.4.428 v7.4.428
authorBram Moolenaar <Bram@vim.org>
Fri, 29 Aug 2014 15:45:32 +0000 (17:45 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 29 Aug 2014 15:45:32 +0000 (17:45 +0200)
Problem:    executable() may return a wrong result on MS-Windows.
Solution:   Change the way SearchPath() is called. (Yasuhiro Matsumoto, Ken
            Takata)

src/os_win32.c
src/version.c

index 0c896efc374b9ff60f50496edf7062f62d512eef..dd5714158ce4d247f90ce33abf6fb0d3efbc6a64 100644 (file)
@@ -1906,6 +1906,8 @@ executable_exists(char *name, char_u **path)
 {
     char       *dum;
     char       fname[_MAX_PATH];
+    char       *curpath, *newpath;
+    long       n;
 
 #ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
@@ -1913,11 +1915,19 @@ executable_exists(char *name, char_u **path)
        WCHAR   *p = enc_to_utf16(name, NULL);
        WCHAR   fnamew[_MAX_PATH];
        WCHAR   *dumw;
-       long    n;
+       WCHAR   *wcurpath, *wnewpath;
 
        if (p != NULL)
        {
-           n = (long)SearchPathW(NULL, p, NULL, _MAX_PATH, fnamew, &dumw);
+           wcurpath = _wgetenv(L"PATH");
+           wnewpath = (WCHAR*)alloc((unsigned)(wcslen(wcurpath) + 3)
+                                                           * sizeof(WCHAR));
+           if (wnewpath == NULL)
+               return FALSE;
+           wcscpy(wnewpath, L".;");
+           wcscat(wnewpath, wcurpath);
+           n = (long)SearchPathW(wnewpath, p, NULL, _MAX_PATH, fnamew, &dumw);
+           vim_free(wnewpath);
            vim_free(p);
            if (n > 0 || GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
            {
@@ -1933,7 +1943,16 @@ executable_exists(char *name, char_u **path)
        }
     }
 #endif
-    if (SearchPath(NULL, name, NULL, _MAX_PATH, fname, &dum) == 0)
+
+    curpath = getenv("PATH");
+    newpath = (char*)alloc((unsigned)(STRLEN(curpath) + 3));
+    if (newpath == NULL)
+       return FALSE;
+    STRCPY(newpath, ".;");
+    STRCAT(newpath, curpath);
+    n = (long)SearchPath(newpath, name, NULL, _MAX_PATH, fname, &dum);
+    vim_free(newpath);
+    if (n == 0)
        return FALSE;
     if (mch_isdir(fname))
        return FALSE;
index d43534a11c205f097d20b0cf9de964c4e5cb5df4..17add4334c2361f036a21fbe2bac9224fb55d909 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    428,
 /**/
     427,
 /**/