From f1ab88012df9e71dbca30b4acef17d29cba45519 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Wed, 3 Feb 2021 17:57:07 +0100 Subject: evaluate: set evaluation context for set elements This resolves same issue as previous patch when such expression is used as a set key: set z { typeof ct zone - elements = { 1, 512, 768, 1024, 1280, 1536 } + elements = { 1, 2, 3, 4, 5, 6 } } Signed-off-by: Florian Westphal --- src/evaluate.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/evaluate.c b/src/evaluate.c index 0ab94ab8..cebf7cb8 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -1393,8 +1393,15 @@ static int expr_evaluate_set_elem(struct eval_ctx *ctx, struct expr **expr) { struct expr *elem = *expr; - if (ctx->set && __expr_evaluate_set_elem(ctx, elem) < 0) - return -1; + if (ctx->set) { + const struct expr *key; + + if (__expr_evaluate_set_elem(ctx, elem) < 0) + return -1; + + key = ctx->set->key; + __expr_set_context(&ctx->ectx, key->dtype, key->byteorder, key->len, 0); + } if (expr_evaluate(ctx, &elem->key) < 0) return -1; -- cgit v1.2.3