Remove redundant check for elem->etype == EXPR_SET_ELEM, assert() already validates this at the beginning of the loop. Remove redundant pointer to set element, use iterator index instead. Signed-off-by: Pablo Neira Ayuso --- src/evaluate.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/evaluate.c b/src/evaluate.c index 85c446a124ee..82736bc5211c 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -2056,7 +2056,6 @@ static void expr_evaluate_set_ref(struct eval_ctx *ctx, struct expr *expr) static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr) { struct expr *set = *expr, *i, *next; - const struct expr *elem; list_for_each_entry_safe(i, next, &expr_set(set)->expressions, list) { assert(i->etype == EXPR_SET_ELEM); @@ -2083,10 +2082,7 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr) continue; } - elem = i; - - if (elem->etype == EXPR_SET_ELEM && - elem->key->etype == EXPR_SET_REF) + if (i->key->etype == EXPR_SET_REF) return expr_error(ctx->msgs, i, "Set reference cannot be part of another set"); @@ -2094,8 +2090,7 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr) return expr_error(ctx->msgs, i, "Set member is not constant"); - if (i->etype == EXPR_SET_ELEM && - i->key->etype == EXPR_SET) { + if (i->key->etype == EXPR_SET) { /* Merge recursive set definitions */ list_splice_tail_init(&expr_set(i->key)->expressions, &i->list); list_del(&i->list); @@ -2104,9 +2099,9 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr) expr_free(i); } else if (!expr_is_singleton(i)) { expr_set(set)->set_flags |= NFT_SET_INTERVAL; - if ((elem->key->etype == EXPR_MAPPING && - elem->key->left->etype == EXPR_CONCAT) || - elem->key->etype == EXPR_CONCAT) + if ((i->key->etype == EXPR_MAPPING && + i->key->left->etype == EXPR_CONCAT) || + i->key->etype == EXPR_CONCAT) expr_set(set)->set_flags |= NFT_SET_CONCAT; } } -- 2.30.2