forked from aniani/vim
patch 8.2.1985: crash when closing terminal popup with <Cmd> mapping
Problem: Crash when closing terminal popup with <Cmd> mapping. Solution: Check b_term is not NULL. (closes #7294)
This commit is contained in:
@@ -2527,7 +2527,7 @@ terminal_loop(int blocking)
|
||||
while (blocking || vpeekc_nomap() != NUL)
|
||||
{
|
||||
#ifdef FEAT_GUI
|
||||
if (!curbuf->b_term->tl_system)
|
||||
if (curbuf->b_term != NULL && !curbuf->b_term->tl_system)
|
||||
#endif
|
||||
// TODO: skip screen update when handling a sequence of keys.
|
||||
// Repeat redrawing in case a message is received while redrawing.
|
||||
@@ -2542,8 +2542,6 @@ terminal_loop(int blocking)
|
||||
restore_cursor = TRUE;
|
||||
|
||||
raw_c = term_vgetc();
|
||||
if (raw_c > 0)
|
||||
ch_log(NULL, "terminal_loop() got %d", raw_c);
|
||||
if (!term_use_loop_check(TRUE) || in_terminal_loop != curbuf->b_term)
|
||||
{
|
||||
// Job finished while waiting for a character. Push back the
|
||||
|
@@ -1225,6 +1225,18 @@ func Test_open_term_from_cmd()
|
||||
call delete('Xopenterm')
|
||||
endfunc
|
||||
|
||||
func Test_terminal_popup_with_cmd()
|
||||
" this was crashing
|
||||
let buf = term_start(&shell, #{hidden: v:true})
|
||||
let s:winid = popup_create(buf, {})
|
||||
tnoremap <F3> <Cmd>call popup_close(s:winid)<CR>
|
||||
call feedkeys("\<F3>", 'xt')
|
||||
|
||||
tunmap <F3>
|
||||
exe 'bwipe! ' .. buf
|
||||
unlet s:winid
|
||||
endfunc
|
||||
|
||||
func Check_dump01(off)
|
||||
call assert_equal('one two three four five', trim(getline(a:off + 1)))
|
||||
call assert_equal('~ Select Word', trim(getline(a:off + 7)))
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1985,
|
||||
/**/
|
||||
1984,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user