* src/w32menu.c (w32_menu_show): Use SAFE_ALLOCA. (Bug#55068)

This commit is contained in:
Eli Zaretskii 2022-05-23 16:54:17 +03:00
parent aab560f0c1
commit b3e4526f21

View file

@ -556,10 +556,8 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
HMENU menu;
POINT pos;
widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0;
widget_value **submenu_stack
= (widget_value **) alloca (menu_items_used * sizeof (widget_value *));
Lisp_Object *subprefix_stack
= (Lisp_Object *) alloca (menu_items_used * word_size);
widget_value **submenu_stack;
Lisp_Object *subprefix_stack;
int submenu_depth = 0;
bool first_pane;
@ -574,6 +572,11 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
return Qnil;
}
USE_SAFE_ALLOCA;
submenu_stack = SAFE_ALLOCA (menu_items_used * sizeof (widget_value *));
subprefix_stack = SAFE_ALLOCA (menu_items_used * word_size);
block_input ();
/* Create a tree of widget_value objects
@ -816,6 +819,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
entry = Fcons (subprefix_stack[j], entry);
}
unblock_input ();
SAFE_FREE ();
return entry;
}
i += MENU_ITEMS_ITEM_LENGTH;
@ -830,6 +834,7 @@ w32_menu_show (struct frame *f, int x, int y, int menuflags,
}
unblock_input ();
SAFE_FREE ();
return Qnil;
}