The check_all argument is pointless, because the function degenerates to !same_trailer when check_all==0 (if same_trailer fails, it always ends up returning 1). Remove it, switching the check_all==0 caller to use same_trailer directly. Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> --- trailer.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/trailer.c b/trailer.c index 4ba28ae33..91f89db7f 100644 --- a/trailer.c +++ b/trailer.c @@ -194,14 +194,11 @@ static void add_arg_to_input_list(struct trailer_item *on_tok, static int check_if_different(struct trailer_item *in_tok, struct arg_item *arg_tok, - int check_all, struct list_head *head) { enum trailer_where where = arg_tok->conf.where; struct list_head *next_head; - do { - if (same_trailer(in_tok, arg_tok)) - return 0; + while (!same_trailer(in_tok, arg_tok)) { /* * if we want to add a trailer after another one, * we have to check those before this one @@ -209,10 +206,10 @@ static int check_if_different(struct trailer_item *in_tok, next_head = after_or_end(where) ? in_tok->list.prev : in_tok->list.next; if (next_head == head) - break; + return 1; in_tok = list_entry(next_head, struct trailer_item, list); - } while (check_all); - return 1; + } + return 0; } static char *apply_command(const char *command, const char *arg) @@ -283,12 +280,12 @@ static void apply_arg_if_exists(struct trailer_item *in_tok, break; case EXISTS_ADD_IF_DIFFERENT: apply_item_command(in_tok, arg_tok); - if (check_if_different(in_tok, arg_tok, 1, head)) + if (check_if_different(in_tok, arg_tok, head)) add_arg_to_input_list(on_tok, arg_tok); break; case EXISTS_ADD_IF_DIFFERENT_NEIGHBOR: apply_item_command(in_tok, arg_tok); - if (check_if_different(on_tok, arg_tok, 0, head)) + if (!same_trailer(on_tok, arg_tok)) add_arg_to_input_list(on_tok, arg_tok); break; default: -- 2.14.2