diff options
Diffstat (limited to 'src/pgtkmenu.c')
| -rw-r--r-- | src/pgtkmenu.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/pgtkmenu.c b/src/pgtkmenu.c index a2e09b6cb58..54e1c3739cf 100644 --- a/src/pgtkmenu.c +++ b/src/pgtkmenu.c | |||
| @@ -596,14 +596,10 @@ pgtk_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 596 | { | 596 | { |
| 597 | int i; | 597 | int i; |
| 598 | widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0; | 598 | widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0; |
| 599 | widget_value **submenu_stack | 599 | widget_value **submenu_stack; |
| 600 | = alloca (menu_items_used * sizeof *submenu_stack); | 600 | Lisp_Object *subprefix_stack; |
| 601 | Lisp_Object *subprefix_stack | ||
| 602 | = alloca (menu_items_used * sizeof *subprefix_stack); | ||
| 603 | int submenu_depth = 0; | 601 | int submenu_depth = 0; |
| 604 | 602 | ||
| 605 | specpdl_ref specpdl_count = SPECPDL_INDEX (); | ||
| 606 | |||
| 607 | eassert (FRAME_PGTK_P (f)); | 603 | eassert (FRAME_PGTK_P (f)); |
| 608 | 604 | ||
| 609 | *error_name = NULL; | 605 | *error_name = NULL; |
| @@ -614,6 +610,11 @@ pgtk_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 614 | return Qnil; | 610 | return Qnil; |
| 615 | } | 611 | } |
| 616 | 612 | ||
| 613 | USE_SAFE_ALLOCA; | ||
| 614 | SAFE_NALLOCA (submenu_stack, 1, menu_items_used); | ||
| 615 | SAFE_NALLOCA (subprefix_stack, 1, menu_items_used); | ||
| 616 | specpdl_ref specpdl_count = SPECPDL_INDEX (); | ||
| 617 | |||
| 617 | block_input (); | 618 | block_input (); |
| 618 | 619 | ||
| 619 | /* Create a tree of widget_value objects | 620 | /* Create a tree of widget_value objects |
| @@ -830,6 +831,7 @@ pgtk_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 830 | entry = Fcons (subprefix_stack[j], entry); | 831 | entry = Fcons (subprefix_stack[j], entry); |
| 831 | } | 832 | } |
| 832 | unblock_input (); | 833 | unblock_input (); |
| 834 | SAFE_FREE (); | ||
| 833 | return entry; | 835 | return entry; |
| 834 | } | 836 | } |
| 835 | i += MENU_ITEMS_ITEM_LENGTH; | 837 | i += MENU_ITEMS_ITEM_LENGTH; |
| @@ -844,6 +846,7 @@ pgtk_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 844 | } | 846 | } |
| 845 | 847 | ||
| 846 | unblock_input (); | 848 | unblock_input (); |
| 849 | SAFE_FREE (); | ||
| 847 | return Qnil; | 850 | return Qnil; |
| 848 | } | 851 | } |
| 849 | 852 | ||