]> granicus.if.org Git - vim/commitdiff
patch 9.0.0009: going past the end of a menu item with only modifier v9.0.0009
authorBram Moolenaar <Bram@vim.org>
Wed, 29 Jun 2022 20:16:58 +0000 (21:16 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 29 Jun 2022 20:16:58 +0000 (21:16 +0100)
Problem:    Going past the end of a menu item with only modifier.
Solution:   Check for NUL.

src/message.c
src/testdir/test_menu.vim
src/version.c

index 02380e9177c2e310f429543b9fa9b2a005f30dcd..becb2804d00c320a4611116adbb1129fb7a7dd0f 100644 (file)
@@ -1820,8 +1820,8 @@ str2special(
            *sp = str + 1;
     }
     else
-       // single-byte character or illegal byte
-       *sp = str + 1;
+       // single-byte character, NUL or illegal byte
+       *sp = str + (*str == NUL ? 0 : 1);
 
     // Make special keys and C0 control characters in <> form, also <M-Space>.
     // Use <Space> only for lhs of a mapping.
index c867162e5bbd554f61783afa30dbd9a3adddad7a..df717cc8a75c52c2308a6935ab0cef451b24407e 100644 (file)
@@ -528,4 +528,17 @@ func Test_tmenu()
   tunmenu Test
 endfunc
 
+func Test_only_modifier()
+  exe "tmenu a.b \x80\xfc0"
+  let exp =<< trim [TEXT]
+  --- Menus ---
+  500 a
+    500 b
+        t  - <T-2-^@>
+  [TEXT]
+  call assert_equal(exp, split(execute('tmenu'), "\n"))
+
+  tunmenu a.b
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index ea1cc16c715cae9adb33bcdc84552104719f3c95..003984ab6617e411fac278df40e219e166f0ed75 100644 (file)
@@ -735,6 +735,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    9,
 /**/
     8,
 /**/