diff options
author | Florian Westphal <fw@strlen.de> | 2018-04-02 21:26:07 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2018-04-03 15:15:17 +0200 |
commit | aa732e3053e64b62318dd056aac140158c680f8a (patch) | |
tree | 1cf0bacdb6201df63aa173862da018a97c2159f0 /src/evaluate.c | |
parent | 57cf280d7838a5cae8404402d5d4c4b657f56fcf (diff) |
evaluate: use recursive call for SET_REF handling
We can now call the helper again, with set->init as new RHS expression.
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src/evaluate.c')
-rw-r--r-- | src/evaluate.c | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index d03bfb06..efdbb5e5 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -1552,35 +1552,7 @@ static int __binop_transfer(struct eval_ctx *ctx, } break; case EXPR_SET_REF: - list_for_each_entry(i, &(*right)->set->init->expressions, list) { - switch (i->key->ops->type) { - case EXPR_VALUE: - case EXPR_RANGE: - case EXPR_SET_ELEM: - err = binop_can_transfer(ctx, left, i->key); - if (err <= 0) - return err; - break; - default: - break; - } - } - list_for_each_entry_safe(i, next, &(*right)->set->init->expressions, - list) { - list_del(&i->list); - switch (i->key->ops->type) { - case EXPR_VALUE: - case EXPR_RANGE: - case EXPR_SET_ELEM: - if (binop_transfer_one(ctx, left, &i->key) < 0) - return -1; - break; - default: - break; - } - list_add_tail(&i->list, &next->list); - } - break; + return __binop_transfer(ctx, left, &(*right)->set->init); default: return 0; } |