Merge pull request #19514 from zeertzjq/vim-8.1.1424

vim-patch:8.1.1424,9.0.0076: crash when popup menu is deleted while waiting for char
This commit is contained in:
zeertzjq 2022-07-26 20:03:02 +08:00 committed by GitHub
commit 1a4753f25a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 1 deletions

View File

@ -1054,7 +1054,10 @@ void pum_show_popupmenu(vimmenu_T *menu)
ui_flush();
int c = vgetc();
if (c == ESC || c == Ctrl_C) {
// Bail out when typing Esc, CTRL-C or some callback or <expr> mapping
// closed the popup menu.
if (c == ESC || c == Ctrl_C || pum_array == NULL) {
break;
} else if (c == CAR || c == NL) {
// enter: select current item, if any, and close

View File

@ -955,6 +955,25 @@ func Test_menu_only_exists_in_terminal()
endtry
endfunc
" This used to crash before patch 8.1.1424
func Test_popup_delete_when_shown()
CheckFeature menu
CheckNotGui
func Func()
popup Foo
return "\<Ignore>"
endfunc
nmenu Foo.Bar :
nnoremap <expr> <F2> Func()
call feedkeys("\<F2>\<F2>\<Esc>", 'xt')
delfunc Func
nunmenu Foo.Bar
nunmap <F2>
endfunc
func Test_popup_complete_info_01()
new
inoremap <buffer><F5> <C-R>=complete_info().mode<CR>