updated for version 7.4.160
Problem: Win32: Crash when executing external command.
Solution: Only close the handle when it was created. (Yasuhiro Matsumoto)
diff --git a/src/os_win32.c b/src/os_win32.c
index e9ec5f7..844b70a 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -4627,6 +4627,7 @@
DWORD flags = CREATE_NEW_CONSOLE;
char_u *p;
+ ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.lpReserved = NULL;
si.lpDesktop = NULL;
@@ -4723,9 +4724,9 @@
if (newcmd != cmdbase)
vim_free(newcmd);
- if (si.hStdInput != NULL)
+ if (si.dwFlags == STARTF_USESTDHANDLES && si.hStdInput != NULL)
{
- /* Close the handle to \\.\NUL */
+ /* Close the handle to \\.\NUL created above. */
CloseHandle(si.hStdInput);
}
/* Close the handles to the subprocess, so that it goes away */