From: zeertzjq Date: Mon, 19 Jan 2026 19:02:08 +0000 (+0000) Subject: patch 9.1.2098: Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A X-Git-Tag: v9.1.2098^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=311b98d94256038fd2a5a823edcb6ab50d2fc8e8;p=thirdparty%2Fvim.git patch 9.1.2098: Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A Problem: Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A (after 9.1.1714) (fizz-is-on-the-way). Solution: Check if there are matches before applying one (zeertzjq). closes: #19210 Signed-off-by: zeertzjq Signed-off-by: Christian Brabandt --- 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, /**/