aboutsummaryrefslogtreecommitdiffstats
path: root/src/xmenu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmenu.c')
-rw-r--r--src/xmenu.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/xmenu.c b/src/xmenu.c
index dbf8145f737..b1f7dfb26bc 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -966,6 +966,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
966 Lisp_Object *previous_items 966 Lisp_Object *previous_items
967 = (Lisp_Object *) alloca (previous_menu_items_used 967 = (Lisp_Object *) alloca (previous_menu_items_used
968 * sizeof (Lisp_Object)); 968 * sizeof (Lisp_Object));
969 EMACS_UINT subitems;
969 970
970 /* If we are making a new widget, its contents are empty, 971 /* If we are making a new widget, its contents are empty,
971 do always reinitialize them. */ 972 do always reinitialize them. */
@@ -1010,21 +1011,21 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
1010 1011
1011 menu_items = f->menu_bar_vector; 1012 menu_items = f->menu_bar_vector;
1012 menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0; 1013 menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0;
1013 submenu_start = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); 1014 subitems = XVECTOR (items)->size / 4;
1014 submenu_end = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); 1015 submenu_start = (int *) alloca (subitems * sizeof (int *));
1015 submenu_n_panes = (int *) alloca (XVECTOR (items)->size * sizeof (int)); 1016 submenu_end = (int *) alloca (subitems * sizeof (int *));
1016 submenu_top_level_items 1017 submenu_n_panes = (int *) alloca (subitems * sizeof (int));
1017 = (int *) alloca (XVECTOR (items)->size * sizeof (int *)); 1018 submenu_top_level_items = (int *) alloca (subitems * sizeof (int *));
1018 init_menu_items (); 1019 init_menu_items ();
1019 for (i = 0; i < XVECTOR (items)->size; i += 4) 1020 for (i = 0; i < subitems; i++)
1020 { 1021 {
1021 Lisp_Object key, string, maps; 1022 Lisp_Object key, string, maps;
1022 1023
1023 last_i = i; 1024 last_i = i;
1024 1025
1025 key = XVECTOR (items)->contents[i]; 1026 key = XVECTOR (items)->contents[4 * i];
1026 string = XVECTOR (items)->contents[i + 1]; 1027 string = XVECTOR (items)->contents[4 * i + 1];
1027 maps = XVECTOR (items)->contents[i + 2]; 1028 maps = XVECTOR (items)->contents[4 * i + 2];
1028 if (NILP (string)) 1029 if (NILP (string))
1029 break; 1030 break;
1030 1031
@@ -1051,7 +1052,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
1051 wv->help = Qnil; 1052 wv->help = Qnil;
1052 first_wv = wv; 1053 first_wv = wv;
1053 1054
1054 for (i = 0; i < last_i; i += 4) 1055 for (i = 0; i < last_i; i++)
1055 { 1056 {
1056 menu_items_n_panes = submenu_n_panes[i]; 1057 menu_items_n_panes = submenu_n_panes[i];
1057 wv = digest_single_submenu (submenu_start[i], submenu_end[i], 1058 wv = digest_single_submenu (submenu_start[i], submenu_end[i],