All callees of process_trailers_lists are calling free_arg_item.
Just do it in process_trailers_lists itself.

Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
 trailer.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/trailer.c b/trailer.c
index 3ba157ed0..4ba28ae33 100644
--- a/trailer.c
+++ b/trailer.c
@@ -178,7 +178,6 @@ static struct trailer_item *trailer_from_arg(struct 
arg_item *arg_tok)
        new->token = arg_tok->token;
        new->value = arg_tok->value;
        arg_tok->token = arg_tok->value = NULL;
-       free_arg_item(arg_tok);
        return new;
 }
 
@@ -271,7 +270,6 @@ static void apply_arg_if_exists(struct trailer_item *in_tok,
 {
        switch (arg_tok->conf.if_exists) {
        case EXISTS_DO_NOTHING:
-               free_arg_item(arg_tok);
                break;
        case EXISTS_REPLACE:
                apply_item_command(in_tok, arg_tok);
@@ -287,15 +285,11 @@ static void apply_arg_if_exists(struct trailer_item 
*in_tok,
                apply_item_command(in_tok, arg_tok);
                if (check_if_different(in_tok, arg_tok, 1, head))
                        add_arg_to_input_list(on_tok, arg_tok);
-               else
-                       free_arg_item(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))
                        add_arg_to_input_list(on_tok, arg_tok);
-               else
-                       free_arg_item(arg_tok);
                break;
        default:
                die("BUG: trailer.c: unhandled value %d",
@@ -311,7 +305,6 @@ static void apply_arg_if_missing(struct list_head *head,
 
        switch (arg_tok->conf.if_missing) {
        case MISSING_DO_NOTHING:
-               free_arg_item(arg_tok);
                break;
        case MISSING_ADD:
                where = arg_tok->conf.where;
@@ -374,6 +367,8 @@ static void process_trailers_lists(struct list_head *head,
 
                if (!applied)
                        apply_arg_if_missing(head, arg_tok);
+
+               free_arg_item(arg_tok);
        }
 }
 
-- 
2.14.2


Reply via email to