diff options
Diffstat (limited to 'src/evaluate.c')
-rw-r--r-- | src/evaluate.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 9bc67d8f..647e1606 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -2708,6 +2708,13 @@ static int stmt_evaluate_set(struct eval_ctx *ctx, struct stmt *stmt) if (stmt->set.key->comment != NULL) return expr_error(ctx->msgs, stmt->set.key, "Key expression comments are not supported"); + if (stmt->set.stmt) { + if (stmt_evaluate(ctx, stmt->set.stmt) < 0) + return -1; + if (!(stmt->set.stmt->flags & STMT_F_STATEFUL)) + return stmt_binary_error(ctx, stmt->set.stmt, stmt, + "meter statement must be stateful"); + } return 0; } @@ -2739,6 +2746,13 @@ static int stmt_evaluate_map(struct eval_ctx *ctx, struct stmt *stmt) if (stmt->map.data->comment != NULL) return expr_error(ctx->msgs, stmt->map.data, "Data expression comments are not supported"); + if (stmt->map.stmt) { + if (stmt_evaluate(ctx, stmt->map.stmt) < 0) + return -1; + if (!(stmt->map.stmt->flags & STMT_F_STATEFUL)) + return stmt_binary_error(ctx, stmt->map.stmt, stmt, + "meter statement must be stateful"); + } return 0; } |