diff options
-rw-r--r-- | jim.c | 10 | ||||
-rw-r--r-- | tests/misc.test | 5 |
2 files changed, 12 insertions, 3 deletions
@@ -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 |