Commit db60d856 authored by Jim Blandy's avatar Jim Blandy
Browse files

* keyboard.c (menu_bar_items): Bind Qinhibit_quit to Qt while we

	call the keymap accessors; this gets called during redisplay.
parent 5c851ea7
......@@ -3059,6 +3059,8 @@ static Lisp_Object menu_bar_one_keymap ();
Lisp_Object
menu_bar_items ()
{
int count = specpdl_ptr - specpdl;
/* The number of keymaps we're scanning right now, and the number of
keymaps we have allocated space for. */
int nmaps;
......@@ -3073,6 +3075,12 @@ menu_bar_items ()
int mapno;
/* In order to build the menus, we need to call the keymap
accessors. They all call QUIT. But this function is called
during redisplay, during which a quit is fatal. So inhibit
quitting while building the menus. */
specbind (Qinhibit_quit, Qt);
/* Build our list of keymaps.
If we recognize a function key and replace its escape sequence in
keybuf with its symbol, or if the sequence starts with a mouse
......@@ -3108,7 +3116,7 @@ menu_bar_items ()
result = menu_bar_one_keymap (def, result);
}
return Fnreverse (result);
return unbind_to (count, Fnreverse (result));
}
/* Scan one map KEYMAP, accumulating any menu items it defines
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment