Since setelem_delete() assigns to 'prev' pointer only if it doesn't have EXPR_F_REMOVE flag set, there is no need to check that flag in called functions. Fixes: 3e8d934e4f722 ("intervals: support to partial deletion with automerge") Signed-off-by: Phil Sutter <phil@xxxxxx> --- src/intervals.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/intervals.c b/src/intervals.c index 451bc4dd4dd45..c0077c06880ff 100644 --- a/src/intervals.c +++ b/src/intervals.c @@ -265,14 +265,12 @@ static void remove_elem(struct expr *prev, struct set *set, struct expr *purge) { struct expr *clone; - if (!(prev->flags & EXPR_F_REMOVE)) { - if (prev->flags & EXPR_F_KERNEL) { - clone = expr_clone(prev); - list_move_tail(&clone->list, &purge->expressions); - } else { - list_del(&prev->list); - expr_free(prev); - } + if (prev->flags & EXPR_F_KERNEL) { + clone = expr_clone(prev); + list_move_tail(&clone->list, &purge->expressions); + } else { + list_del(&prev->list); + expr_free(prev); } } @@ -360,18 +358,15 @@ static int setelem_adjust(struct set *set, struct expr *add, struct expr *purge, { if (mpz_cmp(prev_range->low, range->low) == 0 && mpz_cmp(prev_range->high, range->high) > 0) { - if (!(prev->flags & EXPR_F_REMOVE) && - i->flags & EXPR_F_REMOVE) + if (i->flags & EXPR_F_REMOVE) adjust_elem_left(set, prev, i, add, purge); } else if (mpz_cmp(prev_range->low, range->low) < 0 && mpz_cmp(prev_range->high, range->high) == 0) { - if (!(prev->flags & EXPR_F_REMOVE) && - i->flags & EXPR_F_REMOVE) + if (i->flags & EXPR_F_REMOVE) adjust_elem_right(set, prev, i, add, purge); } else if (mpz_cmp(prev_range->low, range->low) < 0 && mpz_cmp(prev_range->high, range->high) > 0) { - if (!(prev->flags & EXPR_F_REMOVE) && - i->flags & EXPR_F_REMOVE) + if (i->flags & EXPR_F_REMOVE) split_range(set, prev, i, add, purge); } else { return -1; @@ -417,8 +412,7 @@ static int setelem_delete(struct list_head *msgs, struct set *set, if (mpz_cmp(prev_range.low, range.low) == 0 && mpz_cmp(prev_range.high, range.high) == 0) { - if (!(prev->flags & EXPR_F_REMOVE) && - i->flags & EXPR_F_REMOVE) { + if (i->flags & EXPR_F_REMOVE) { list_move_tail(&prev->list, &purge->expressions); list_del(&i->list); expr_free(i); -- 2.34.1