# HG changeset patch # User Christian Brabandt # Date 1521492307 -3600 # Node ID db5cc048222d3b491dfba2138261403a3ae2acfe # Parent cfd724926e59cda351aeb52338e64723244c5f71 patch 8.0.1617: Win32: :shell command in the GUI crashes commit https://github.com/vim/vim/commit/42f652f733550a0d8bc9b030c9a5a62e7e2d8668 Author: Bram Moolenaar 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) diff --git a/src/os_win32.c b/src/os_win32.c --- 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 --- 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,