changeset 13487:db5cc048222d v8.0.1617

patch 8.0.1617: Win32: :shell command in the GUI crashes commit https://github.com/vim/vim/commit/42f652f733550a0d8bc9b030c9a5a62e7e2d8668 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Mar 19 21:44:37 2018 +0100 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)
author Christian Brabandt <cb@256bit.org>
date Mon, 19 Mar 2018 21:45:07 +0100
parents cfd724926e59
children f238ebf07c36
files src/os_win32.c src/version.c
diffstat 2 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -4800,15 +4800,25 @@ mch_call_shell_terminal(
     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;
--- a/src/version.c
+++ b/src/version.c
@@ -767,6 +767,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1617,
+/**/
     1616,
 /**/
     1615,