* include/grub/command.h (FOR_COMMANDS_SAFE): Likewise.
* grub-core/commands/help.c (grub_cmd_help): Use FOR_COMMANDS_SAFE.
else
{
int i;
- grub_command_t cmd_iter, cmd;
+ grub_command_t cmd_iter, cmd, cmd_next;
for (i = 0; i < argc; i++)
{
currarg = args[i];
- FOR_COMMANDS(cmd_iter)
+
+ FOR_COMMANDS_SAFE (cmd_iter, cmd_next)
{
if (!(cmd_iter->prio & GRUB_COMMAND_FLAG_ACTIVE))
continue;
}
#define FOR_COMMANDS(var) FOR_LIST_ELEMENTS((var), grub_command_list)
+#define FOR_COMMANDS_SAFE(var, next) FOR_LIST_ELEMENTS_SAFE((var), (next), grub_command_list)
void grub_register_core_commands (void);
void EXPORT_FUNC(grub_list_remove) (grub_list_t item);
#define FOR_LIST_ELEMENTS(var, list) for ((var) = (list); (var); (var) = (var)->next)
+#define FOR_LIST_ELEMENTS_SAFE(var, nxt, list) for ((var) = (list), (nxt) = ((var) ? (var)->next : 0); (var); (var) = (nxt), (nxt) = (var)->next)
static inline void *
grub_bad_type_cast_real (int line, const char *file)