From cf488ebf6c87d8abc1e2b09885d3767511db87a3 Mon Sep 17 00:00:00 2001 From: GuyBrush Date: Sat, 10 May 2025 20:44:33 +0200 Subject: [PATCH] patch 9.1.1379: MS-Windows: error when running evim when space in path Problem: MS-Windows: error when running evim when space in path of Vim Solution: properly parse quoted strings (Miguel Barro) When vim is installed in a path with whitespaces (like `C:\Program Files (x86)\Vim\vim91\vim.exe`). Launching `evim` or `vim -d` will try to open the file ` (x86)\Vim\vim91\vim.exe`. Modern versions of vim simplify shell operation by parsing its own command line. For example on Linux all vim flavours like `evim`, `rvim`, etc are symlinks to vim. Then vim uses the `parse_command_name()` function to identify which version of vim it should launch. For `evim` if a GUI is available `gvim` is launched for better user experience. In order to launch `gvim` the original command line is parsed to be passed *verbatim* to the new instance. This parsing did not properly handle quoted command lines with whitespaces such as ``` "C:\Program Files (x86)\Vim\vim91\vim.exe" -y myfile.txt ``` closes: #17295 Signed-off-by: Miguel Barro Signed-off-by: Christian Brabandt --- src/gui_w32.c | 10 ++++------ src/version.c | 2 ++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui_w32.c b/src/gui_w32.c index 400169a59c..a29fa91b0a 100644 --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -5384,13 +5384,11 @@ gui_mch_do_spawn(char_u *arg) { if (*p == L'"') { - while (*p && *p != L'"') - ++p; - if (*p) - ++p; + // Skip quoted strings + while (*++p && *p != L'"'); } - else - ++p; + + ++p; } cmd = p; } diff --git a/src/version.c b/src/version.c index c84709e500..b0dc438870 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1379, /**/ 1378, /**/