patch 8.0.1617: Win32: :shell command in the GUI crashes
Problem: Win32: :shell command in the GUI crashes.
Solution: Handle the situation that "cmd" is NULL. (Yasuhiro Matsumoto,
closes #2721)
diff --git a/src/os_win32.c b/src/os_win32.c
index c3f3f68..b70a002 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -4800,15 +4800,25 @@
aco_save_T aco;
oparg_T oa; /* operator arguments */
- cmdlen = STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10;
-
+ if (cmd == NULL)
+ cmdlen = STRLEN(p_sh) + 1;
+ else
+ cmdlen = STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10;
newcmd = lalloc(cmdlen, TRUE);
if (newcmd == NULL)
return 255;
- vim_snprintf((char *)newcmd, cmdlen, "%s %s %s", p_sh, p_shcf, cmd);
+ if (cmd == NULL)
+ {
+ STRCPY(newcmd, p_sh);
+ ch_log(NULL, "starting terminal to run a shell");
+ }
+ else
+ {
+ vim_snprintf((char *)newcmd, cmdlen, "%s %s %s", p_sh, p_shcf, cmd);
+ ch_log(NULL, "starting terminal for system command '%s'", cmd);
+ }
init_job_options(&opt);
- ch_log(NULL, "starting terminal for system command '%s'", cmd);
argvar[0].v_type = VAR_STRING;
argvar[0].vval.v_string = newcmd;