]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1948: Windows: Vim adds current directory to search path v9.1.1948
authorChristian Brabandt <cb@256bit.org>
Mon, 1 Dec 2025 20:51:35 +0000 (20:51 +0000)
committerChristian Brabandt <cb@256bit.org>
Tue, 2 Dec 2025 21:46:34 +0000 (21:46 +0000)
Problem:  Windows: Vim always adds the current directory to search path.
          This should only happen when using cmd.exe as 'shell'. For
          example, powershell won't run binaries from the current
          directory.
Solution: Only add current directory to system path, when using cmd.exe
          as 'shell'.

related: #10341
related: 083ec6d9a3b7

Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/doc/builtin.txt
src/os_win32.c
src/version.c

index 5f51af3ad5397c9a5be8ddbf9765941aed4a98c7..a6a7d86630ea1f537d743cba7368541e4d42e947 100644 (file)
@@ -2716,10 +2716,12 @@ executable({expr})                                      *executable()*
                executable is always found.  Since this directory is added to
                $PATH it should also work to execute it |win32-PATH|.
                                        *NoDefaultCurrentDirectoryInExePath*
-               On MS-Windows an executable in Vim's current working directory
-               is also normally found, but this can be disabled by setting
-               the `$NoDefaultCurrentDirectoryInExePath` environment variable.
-               This is always done for |:!| commands, for security reasons.
+               On MS-Windows when using cmd.exe as 'shell' an executable in
+               Vim's current working directory is also normally found, which
+               can be disabled by setting the
+               `$NoDefaultCurrentDirectoryInExePath` environment variable.
+               This is always done when executing external commands using
+               e.g. |:!|, |:make|, |system()| for security reasons.
 
                The result is a Number:
                        1       exists
index 0a25d48506d92e74b8fce38be1f1e752e112058c..35d69c119c8cb7f9e60947314f08e041d7b54db6 100644 (file)
@@ -2867,7 +2867,8 @@ executable_exists(
                goto theend;
            }
 
-           if (mch_getenv("NoDefaultCurrentDirectoryInExePath") == NULL)
+           if (mch_getenv("NoDefaultCurrentDirectoryInExePath") == NULL &&
+                   strstr((char *)gettail(p_sh), "cmd.exe") != NULL)
            {
                STRCPY(pathbuf.string, ".;");
                pathbuf.length = 2;
index 545ecd309cee662aa49ef929b5da2ddd079d2828..b9c5409dc6e8bd53d4accc6108d74a7f3a2ddeec 100644 (file)
@@ -729,6 +729,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1948,
 /**/
     1947,
 /**/