{
int i;
widget_value *wv, *save_wv = 0, *first_wv = 0, *prev_wv = 0;
- widget_value **submenu_stack
- = alloca (menu_items_used * sizeof *submenu_stack);
- Lisp_Object *subprefix_stack
- = alloca (menu_items_used * sizeof *subprefix_stack);
+ widget_value **submenu_stack;
+ Lisp_Object *subprefix_stack;
int submenu_depth = 0;
- specpdl_ref specpdl_count = SPECPDL_INDEX ();
-
eassert (FRAME_PGTK_P (f));
*error_name = NULL;
return Qnil;
}
+ USE_SAFE_ALLOCA;
+ SAFE_NALLOCA (submenu_stack, 1, menu_items_used);
+ SAFE_NALLOCA (subprefix_stack, 1, menu_items_used);
+ specpdl_ref specpdl_count = SPECPDL_INDEX ();
+
block_input ();
/* Create a tree of widget_value objects
entry = Fcons (subprefix_stack[j], entry);
}
unblock_input ();
+ SAFE_FREE ();
return entry;
}
i += MENU_ITEMS_ITEM_LENGTH;
}
unblock_input ();
+ SAFE_FREE ();
return Qnil;
}
widget_value **submenu_stack;
Lisp_Object *subprefix_stack;
int submenu_depth = 0;
- specpdl_ref specpdl_count;
-
USE_SAFE_ALLOCA;
-
SAFE_NALLOCA (submenu_stack, 1, menu_items_used);
SAFE_NALLOCA (subprefix_stack, 1, menu_items_used);
-
- specpdl_count = SPECPDL_INDEX ();
+ specpdl_ref specpdl_count = SPECPDL_INDEX ();
eassert (FRAME_X_P (f));