From 3c2e76f21f3bc3c154018135b4352ef5c694f113 Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Mon, 27 Jun 2011 21:26:17 +1000 Subject: [PATCH] Fix missing expr error message with || and && Signed-off-by: Steve Bennett --- jim.c | 10 +++++++--- tests/misc.test | 5 +++++ 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 -- 2.11.4.GIT