diff --git a/src/ex_getln.c b/src/ex_getln.c index 0ec7293199..65d4c69577 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -1994,7 +1994,7 @@ getcmdline_int( int key_is_wc = (c == p_wc && KeyTyped) || c == p_wcm; if ((cmdline_pum_active() || wild_menu_showing || did_wild_list) - && !key_is_wc) + && !key_is_wc && xpc.xp_numfiles > 0) { // Ctrl-Y: Accept the current selection and close the popup menu. // Ctrl-E: cancel the cmdline popup menu and return the original diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index b4d11ac9d2..ea018d5932 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -162,6 +162,16 @@ func Test_complete_wildmenu() call feedkeys(":sign un zz\\\\\\ yy\\"\", 'tx') call assert_equal('"sign unplace yy zz', @:) + " This used to crash + call feedkeys(":sign un\\\\\\"\", 'tx') + " Ctrl-Y is inserted literally like before 9.1.1714 + call assert_equal("\"sign undefine unplace\", @:) + " Also test Ctrl-Y after Ctrl-A with selected item (the result is the same) + call feedkeys(":sign un\\\\\"\", 'tx') + call assert_equal("\"sign undefine unplace\", @:) + call feedkeys(":sign un\\\\\\"\", 'tx') + call assert_equal("\"sign undefine unplace\", @:) + " cleanup %bwipe set nowildmenu diff --git a/src/version.c b/src/version.c index ede881cf95..4790f8de2e 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2098, /**/ 2097, /**/