@@ -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);
}
}
setelem_adjust() checks that EXPR_F_REMOVE is unset already for the previous element. Suggested-by: Phil Sutter <phil@nwl.cc> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- src/intervals.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)