diff options
| author | Eli Zaretskii | 2022-05-23 16:54:17 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2022-05-23 16:54:17 +0300 |
| commit | b3e4526f21749305b7f6b3f4a18e0df7cd0044a4 (patch) | |
| tree | 0d980f1a54eb7cfb31627236e5e835f686c02b89 /src | |
| parent | aab560f0c1955bae57cc35a71be95b5bfa2ab525 (diff) | |
| download | emacs-b3e4526f21749305b7f6b3f4a18e0df7cd0044a4.tar.gz emacs-b3e4526f21749305b7f6b3f4a18e0df7cd0044a4.zip | |
* src/w32menu.c (w32_menu_show): Use SAFE_ALLOCA. (Bug#55068)
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32menu.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/w32menu.c b/src/w32menu.c index 5cd6c3310e3..b10239d5cc6 100644 --- a/src/w32menu.c +++ b/src/w32menu.c | |||
| @@ -556,10 +556,8 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 556 | HMENU menu; | 556 | HMENU menu; |
| 557 | POINT pos; | 557 | POINT pos; |
| 558 | widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0; | 558 | widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0; |
| 559 | widget_value **submenu_stack | 559 | widget_value **submenu_stack; |
| 560 | = (widget_value **) alloca (menu_items_used * sizeof (widget_value *)); | 560 | Lisp_Object *subprefix_stack; |
| 561 | Lisp_Object *subprefix_stack | ||
| 562 | = (Lisp_Object *) alloca (menu_items_used * word_size); | ||
| 563 | int submenu_depth = 0; | 561 | int submenu_depth = 0; |
| 564 | bool first_pane; | 562 | bool first_pane; |
| 565 | 563 | ||
| @@ -574,6 +572,11 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 574 | return Qnil; | 572 | return Qnil; |
| 575 | } | 573 | } |
| 576 | 574 | ||
| 575 | USE_SAFE_ALLOCA; | ||
| 576 | |||
| 577 | submenu_stack = SAFE_ALLOCA (menu_items_used * sizeof (widget_value *)); | ||
| 578 | subprefix_stack = SAFE_ALLOCA (menu_items_used * word_size); | ||
| 579 | |||
| 577 | block_input (); | 580 | block_input (); |
| 578 | 581 | ||
| 579 | /* Create a tree of widget_value objects | 582 | /* Create a tree of widget_value objects |
| @@ -816,6 +819,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 816 | entry = Fcons (subprefix_stack[j], entry); | 819 | entry = Fcons (subprefix_stack[j], entry); |
| 817 | } | 820 | } |
| 818 | unblock_input (); | 821 | unblock_input (); |
| 822 | SAFE_FREE (); | ||
| 819 | return entry; | 823 | return entry; |
| 820 | } | 824 | } |
| 821 | i += MENU_ITEMS_ITEM_LENGTH; | 825 | i += MENU_ITEMS_ITEM_LENGTH; |
| @@ -830,6 +834,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags, | |||
| 830 | } | 834 | } |
| 831 | 835 | ||
| 832 | unblock_input (); | 836 | unblock_input (); |
| 837 | SAFE_FREE (); | ||
| 833 | return Qnil; | 838 | return Qnil; |
| 834 | } | 839 | } |
| 835 | 840 | ||