mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
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)
This commit is contained in:
@@ -4800,15 +4800,25 @@ mch_call_shell_terminal(
|
|||||||
aco_save_T aco;
|
aco_save_T aco;
|
||||||
oparg_T oa; /* operator arguments */
|
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);
|
newcmd = lalloc(cmdlen, TRUE);
|
||||||
if (newcmd == NULL)
|
if (newcmd == NULL)
|
||||||
return 255;
|
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);
|
init_job_options(&opt);
|
||||||
ch_log(NULL, "starting terminal for system command '%s'", cmd);
|
|
||||||
|
|
||||||
argvar[0].v_type = VAR_STRING;
|
argvar[0].v_type = VAR_STRING;
|
||||||
argvar[0].vval.v_string = newcmd;
|
argvar[0].vval.v_string = newcmd;
|
||||||
|
@@ -766,6 +766,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1617,
|
||||||
/**/
|
/**/
|
||||||
1616,
|
1616,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user