diff options
| author | Andreas Schwab | 2011-05-09 13:13:02 +0200 |
|---|---|---|
| committer | Andreas Schwab | 2011-05-09 13:13:02 +0200 |
| commit | 25fb3d747b89eea898f870fcd1770e6c12830ebb (patch) | |
| tree | 1c5d27a6bc6b09452056ce2fae5140886164401b | |
| parent | 14fe7b530dc927a88169a841afc0cd806593dea8 (diff) | |
| download | emacs-25fb3d747b89eea898f870fcd1770e6c12830ebb.tar.gz emacs-25fb3d747b89eea898f870fcd1770e6c12830ebb.zip | |
* xmenu.c (set_frame_menubar): Fix submenu loops.
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/xmenu.c | 17 |
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 @@ | |||
| 1 | 2011-05-09 Andreas Schwab <schwab@linux-m68k.org> | ||
| 2 | |||
| 3 | * xmenu.c (set_frame_menubar): Fix submenu loops. | ||
| 4 | |||
| 1 | 2011-05-09 Eli Zaretskii <eliz@gnu.org> | 5 | 2011-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], |