From: Bram Moolenaar Date: Mon, 19 Mar 2018 20:44:37 +0000 (+0100) Subject: patch 8.0.1617: Win32: :shell command in the GUI crashes X-Git-Tag: v8.0.1617 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=42f652f733550a0d8bc9b030c9a5a62e7e2d8668;p=vim 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 c3f3f687e..b70a0025d 100644 --- 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; diff --git a/src/version.c b/src/version.c index 58c4e8984..92ca63ad1 100644 --- a/src/version.c +++ b/src/version.c @@ -766,6 +766,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1617, /**/ 1616, /**/