Mercurial > vim
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;