aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schwab2011-05-09 13:13:02 +0200
committerAndreas Schwab2011-05-09 13:13:02 +0200
commit25fb3d747b89eea898f870fcd1770e6c12830ebb (patch)
tree1c5d27a6bc6b09452056ce2fae5140886164401b
parent14fe7b530dc927a88169a841afc0cd806593dea8 (diff)
downloademacs-25fb3d747b89eea898f870fcd1770e6c12830ebb.tar.gz
emacs-25fb3d747b89eea898f870fcd1770e6c12830ebb.zip
* xmenu.c (set_frame_menubar): Fix submenu loops.
-rw-r--r--src/ChangeLog4
-rw-r--r--src/xmenu.c17
2 files changed, 12 insertions, 9 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 2a051a9e27b..4ab5b4e64f1 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
12011-05-09 Andreas Schwab <schwab@linux-m68k.org>
2
3 * xmenu.c (set_frame_menubar): Fix submenu loops.
4
12011-05-09 Eli Zaretskii <eliz@gnu.org> 52011-05-09 Eli Zaretskii <eliz@gnu.org>
2 6
3 Backport revisions 103939.1.41..103939.1.44 (inclusive) from trunk. 7 Backport revisions 103939.1.41..103939.1.44 (inclusive) from trunk.
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],