aboutsummaryrefslogtreecommitdiffstats
path: root/src/xmenu.c
diff options
context:
space:
mode:
authorAndreas Schwab2011-05-09 13:13:02 +0200
committerAndreas Schwab2011-05-09 13:13:02 +0200
commit25fb3d747b89eea898f870fcd1770e6c12830ebb (patch)
tree1c5d27a6bc6b09452056ce2fae5140886164401b /src/xmenu.c
parent14fe7b530dc927a88169a841afc0cd806593dea8 (diff)
downloademacs-25fb3d747b89eea898f870fcd1770e6c12830ebb.tar.gz
emacs-25fb3d747b89eea898f870fcd1770e6c12830ebb.zip
* xmenu.c (set_frame_menubar): Fix submenu loops.
Diffstat (limited to 'src/xmenu.c')
-rw-r--r--src/xmenu.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/xmenu.c b/src/xmenu.c
index 2a05c52ee34..5c6c2b0cfdd 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1058,21 +1058,20 @@ set_frame_menubar (f, first_time, deep_p)
1058 menu_items = f->menu_bar_vector; 1058 menu_items = f->menu_bar_vector;
1059 menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0; 1059 menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0;
1060 subitems = XVECTOR_SIZE (items) / 4; 1060 subitems = XVECTOR_SIZE (items) / 4;
1061 submenu_start = (int *) alloca (subitems * sizeof (int *)); 1061 submenu_start = (int *) alloca (subitems * sizeof (int));
1062 submenu_end = (int *) alloca (subitems * sizeof (int *)); 1062 submenu_end = (int *) alloca (subitems * sizeof (int));
1063 submenu_n_panes = (int *) alloca (subitems * sizeof (int)); 1063 submenu_n_panes = (int *) alloca (subitems * sizeof (int));
1064 submenu_top_level_items 1064 submenu_top_level_items = (int *) alloca (subitems * sizeof (int));
1065 = (int *) alloca (subitems * sizeof (int *));
1066 init_menu_items (); 1065 init_menu_items ();
1067 for (i = 0; i < subitems; i += 4) 1066 for (i = 0; i < subitems; i++)
1068 { 1067 {
1069 Lisp_Object key, string, maps; 1068 Lisp_Object key, string, maps;
1070 1069
1071 last_i = i; 1070 last_i = i;
1072 1071
1073 key = XVECTOR (items)->contents[i]; 1072 key = XVECTOR (items)->contents[i * 4];
1074 string = XVECTOR (items)->contents[i + 1]; 1073 string = XVECTOR (items)->contents[i * 4 + 1];
1075 maps = XVECTOR (items)->contents[i + 2]; 1074 maps = XVECTOR (items)->contents[i * 4 + 2];
1076 if (NILP (string)) 1075 if (NILP (string))
1077 break; 1076 break;
1078 1077
@@ -1099,7 +1098,7 @@ set_frame_menubar (f, first_time, deep_p)
1099 wv->help = Qnil; 1098 wv->help = Qnil;
1100 first_wv = wv; 1099 first_wv = wv;
1101 1100
1102 for (i = 0; i < last_i; i += 4) 1101 for (i = 0; i < last_i; i++)
1103 { 1102 {
1104 menu_items_n_panes = submenu_n_panes[i]; 1103 menu_items_n_panes = submenu_n_panes[i];
1105 wv = digest_single_submenu (submenu_start[i], submenu_end[i], 1104 wv = digest_single_submenu (submenu_start[i], submenu_end[i],