summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-07-26 12:24:41 +0100
committerBram Moolenaar <Bram@vim.org>2022-07-26 12:24:41 +0100
commit92a1678d488b7d023ddf2cd493a6ee0d7fcf1928 (patch)
treecc1bfa906c4c3cb5d3887bb0f28ddb6e70275be8
parentbe3dbda871ffd1b61f52b9519c23772f62381c67 (diff)
downloadvim-git-92a1678d488b7d023ddf2cd493a6ee0d7fcf1928.tar.gz
patch 9.0.0076: no test for what patch 8.1.1424 fixesv9.0.0076
Problem: No test for what patch 8.1.1424 fixes. Solution: Add a test. (closes #10789)
-rw-r--r--src/popupmenu.c4
-rw-r--r--src/testdir/test_popup.vim19
-rw-r--r--src/version.c2
3 files changed, 23 insertions, 2 deletions
diff --git a/src/popupmenu.c b/src/popupmenu.c
index c030cc9e8..37c4a6d25 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -1549,8 +1549,8 @@ pum_show_popupmenu(vimmenu_T *menu)
c = vgetc();
- // Bail out when typing Esc, CTRL-C or some callback closed the popup
- // menu.
+ // 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)
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 5fb7e8222..af14167d5 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -984,6 +984,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>
diff --git a/src/version.c b/src/version.c
index 1909fd4b4..9081fecd1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 76,
+/**/
75,
/**/
74,