From 4d87c9742a544a58c05cb34d4fbaac47e410b369 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Mon, 1 Dec 2025 20:51:35 +0000 Subject: [PATCH] patch 9.1.1948: Windows: Vim adds current directory to search path 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 --- runtime/doc/builtin.txt | 10 ++++++---- src/os_win32.c | 3 ++- src/version.c | 2 ++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index 5f51af3ad5..a6a7d86630 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -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 diff --git a/src/os_win32.c b/src/os_win32.c index 0a25d48506..35d69c119c 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -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; diff --git a/src/version.c b/src/version.c index 545ecd309c..b9c5409dc6 100644 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1948, /**/ 1947, /**/