aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2022-05-23 16:54:17 +0300
committerEli Zaretskii2022-05-23 16:54:17 +0300
commitb3e4526f21749305b7f6b3f4a18e0df7cd0044a4 (patch)
tree0d980f1a54eb7cfb31627236e5e835f686c02b89 /src
parentaab560f0c1955bae57cc35a71be95b5bfa2ab525 (diff)
downloademacs-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.c13
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