]> git.eshelyaron.com Git - emacs.git/commitdiff
(read_char_minibuf_menu_prompt): Ensure that
authorChong Yidong <cyd@stupidchicken.com>
Sat, 25 Oct 2008 20:23:31 +0000 (20:23 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sat, 25 Oct 2008 20:23:31 +0000 (20:23 +0000)
read_char_minibuf_menu_text is large enough to hold the menu string.

src/keyboard.c

index ec1b117a13a5a4c270234bd38b82b87c0593c538..b6834e97a8f73dcb26b9a62ca5ae6b4a8a7f6745 100644 (file)
@@ -8558,7 +8558,20 @@ read_char_minibuf_menu_prompt (commandflag, nmaps, maps)
   if (! menu_prompting)
     return Qnil;
 
+  /* Get the menu name from the first map that has one (a prompt string).  */
+  for (mapno = 0; mapno < nmaps; mapno++)
+    {
+      name = Fkeymap_prompt (maps[mapno]);
+      if (!NILP (name))
+       break;
+    }
+
+  /* If we don't have any menus, just read a character normally.  */
+  if (!STRINGP (name))
+    return Qnil;
+
   /* Make sure we have a big enough buffer for the menu text.  */
+  width = max (width, SBYTES (name));
   if (read_char_minibuf_menu_text == 0)
     {
       read_char_minibuf_menu_width = width + 4;
@@ -8572,18 +8585,6 @@ read_char_minibuf_menu_prompt (commandflag, nmaps, maps)
     }
   menu = read_char_minibuf_menu_text;
 
-  /* Get the menu name from the first map that has one (a prompt string).  */
-  for (mapno = 0; mapno < nmaps; mapno++)
-    {
-      name = Fkeymap_prompt (maps[mapno]);
-      if (!NILP (name))
-       break;
-    }
-
-  /* If we don't have any menus, just read a character normally.  */
-  if (!STRINGP (name))
-    return Qnil;
-
   /* Prompt string always starts with map's prompt, and a space.  */
   strcpy (menu, SDATA (name));
   nlength = SBYTES (name);