diff --git a/init/init.c b/init/init.c index 864ee6ab8..c540faa70 100644 --- a/init/init.c +++ b/init/init.c @@ -598,7 +598,7 @@ static void new_init_action(uint8_t action_type, const char *command, const char */ nextp = &init_action_list; while ((a = *nextp) != NULL) { - /* Don't enter action if it's already in the list, + /* Don't enter action if it's already in the list. * This prevents losing running RESPAWNs. */ if (strcmp(a->command, command) == 0 @@ -610,14 +610,15 @@ static void new_init_action(uint8_t action_type, const char *command, const char while (*nextp != NULL) nextp = &(*nextp)->next; a->next = NULL; - break; + goto append; } nextp = &a->next; } - if (!a) - a = xzalloc(sizeof(*a)); + a = xzalloc(sizeof(*a)); + /* Append to the end of the list */ + append: *nextp = a; a->action_type = action_type; safe_strncpy(a->command, command, sizeof(a->command));