summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2014-02-04 08:09:27 +0000
committerPatrick McHardy <kaber@trash.net>2014-02-04 08:09:27 +0000
commit2e44b61aecad1c57cee14d3f765c4ddd82f13dd9 (patch)
tree532816ec5c0e52d7de2f9ae5395663eae9f6832c /src
parentf40b3a476f14730fd6ced4ddf29bb1c8319c1f6b (diff)
evaluate: determine implicit relational op before RHS constant checks
The symbol for the relational op is shown in the error message. Since OP_IMPLICIT doesn't have a symbol, (null) is shown. Fix by determining the implicit op before checking for constants. Error: Right hand side of relational expression ((null)) must be constant => Error: Right hand side of relational expression (==) must be constant Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'src')
-rw-r--r--src/evaluate.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index 215a004a..a01d2a53 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -872,17 +872,6 @@ static int expr_evaluate_relational(struct eval_ctx *ctx, struct expr **expr)
return -1;
right = rel->right;
- if (!expr_is_constant(right))
- return expr_binary_error(ctx, right, rel,
- "Right hand side of relational "
- "expression (%s) must be constant",
- expr_op_symbols[rel->op]);
- if (expr_is_constant(left))
- return expr_binary_error(ctx, left, right,
- "Relational expression (%s) has "
- "constant value",
- expr_op_symbols[rel->op]);
-
if (rel->op == OP_IMPLICIT) {
switch (right->ops->type) {
case EXPR_RANGE:
@@ -901,6 +890,17 @@ static int expr_evaluate_relational(struct eval_ctx *ctx, struct expr **expr)
}
}
+ if (!expr_is_constant(right))
+ return expr_binary_error(ctx, right, rel,
+ "Right hand side of relational "
+ "expression (%s) must be constant",
+ expr_op_symbols[rel->op]);
+ if (expr_is_constant(left))
+ return expr_binary_error(ctx, left, right,
+ "Relational expression (%s) has "
+ "constant value",
+ expr_op_symbols[rel->op]);
+
switch (rel->op) {
case OP_LOOKUP:
/* A literal set expression implicitly declares the set */