aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jim.c10
-rw-r--r--tests/misc.test5
2 files changed, 12 insertions, 3 deletions
diff --git a/jim.c b/jim.c
index 708d244..ccf120f 100644
--- a/jim.c
+++ b/jim.c
@@ -8209,16 +8209,20 @@ static int ExprAddLazyOperator(Jim_Interp *interp, ExprByteCode * expr, ParseTok
static int ExprAddOperator(Jim_Interp *interp, ExprByteCode * expr, ParseToken *t)
{
struct ScriptToken *token = &expr->token[expr->len];
+ const struct Jim_ExprOperator *op = JimExprOperatorInfoByOpcode(t->type);
- if (JimExprOperatorInfoByOpcode(t->type)->lazy == LAZY_OP) {
- return ExprAddLazyOperator(interp, expr, t);
+ if (op->lazy == LAZY_OP) {
+ if (ExprAddLazyOperator(interp, expr, t) != JIM_OK) {
+ Jim_SetResultFormatted(interp, "Expression has bad operands to %s", op->name);
+ return JIM_ERR;
+ }
}
else {
token->objPtr = interp->emptyObj;
token->type = t->type;
expr->len++;
- return JIM_OK;
}
+ return JIM_OK;
}
/**
diff --git a/tests/misc.test b/tests/misc.test
index 4557773..c5a389e 100644
--- a/tests/misc.test
+++ b/tests/misc.test
@@ -541,4 +541,9 @@ test lmap-1.1 {lmap} {
lmap p {1 2 3} {incr p}
} {2 3 4}
+test exprerr-1.1 {Error message with bad expr} {
+ catch {expr {5 ||}} msg
+ set msg
+} {Expression has bad operands to ||}
+
testreport