From 0ce93baa9f4db1acc393b185662b506aebbb759a Mon Sep 17 00:00:00 2001 From: Patrick McHardy Date: Wed, 27 Apr 2016 12:29:45 +0100 Subject: set: allow non-constant implicit set declarations Currently all implicitly declared sets are marked as constant. The flow statement needs to implicitly declare non-constant sets, so instead of unconditionally marking the set as constant, only do so if the declaring expression is itself a constant set. Signed-off-by: Patrick McHardy Signed-off-by: Pablo Neira Ayuso --- src/evaluate.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/evaluate.c') diff --git a/src/evaluate.c b/src/evaluate.c index 3afb8ead..c5f87a19 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -96,7 +96,7 @@ static struct expr *implicit_set_declaration(struct eval_ctx *ctx, struct handle h; set = set_alloc(&expr->location); - set->flags = SET_F_CONSTANT | SET_F_ANONYMOUS | expr->set_flags; + set->flags = SET_F_ANONYMOUS | expr->set_flags; set->handle.set = xstrdup(set->flags & SET_F_MAP ? "map%d" : "set%d"); set->keytype = keytype; set->keylen = keylen; @@ -1075,6 +1075,8 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr) set->set_flags |= SET_F_INTERVAL; } + set->set_flags |= SET_F_CONSTANT; + set->dtype = ctx->ectx.dtype; set->len = ctx->ectx.len; set->flags |= EXPR_F_CONSTANT; -- cgit v1.2.3