aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2021-01-02 14:11:46 +1000
committerSteve Bennett <steveb@workware.net.au>2021-03-09 22:08:04 +1000
commit1843b79a03dde71e361ade45e577e6ef4e52cfe5 (patch)
tree9b551fe6c81d6f261b3a107a7e794f2ea5e3284f /jim.c
parent5fed880195c92cc4d70cd960a116d4130f1a37f4 (diff)
downloadjimtcl-1843b79a03dde71e361ade45e577e6ef4e52cfe5.zip
jimtcl-1843b79a03dde71e361ade45e577e6ef4e52cfe5.tar.gz
jimtcl-1843b79a03dde71e361ade45e577e6ef4e52cfe5.tar.bz2
expr: TIP 526, only support a single arg
Avoid unexpected issues by concatenating multiple arguments. This does create an incompatibility with early versions, but it is generally trivial to convert existing code to one of two forms: 1. expr {$a + $b} -- usually correct 2. expr "$a + $b" -- usually incorrect Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/jim.c b/jim.c
index f893a01..f749500 100644
--- a/jim.c
+++ b/jim.c
@@ -13590,26 +13590,11 @@ static int Jim_UplevelCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *
/* [expr] */
static int Jim_ExprCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
- int retcode;
-
if (argc == 2) {
- retcode = Jim_EvalExpression(interp, argv[1]);
- }
- else if (argc > 2) {
- Jim_Obj *objPtr;
-
- objPtr = Jim_ConcatObj(interp, argc - 1, argv + 1);
- Jim_IncrRefCount(objPtr);
- retcode = Jim_EvalExpression(interp, objPtr);
- Jim_DecrRefCount(interp, objPtr);
+ return Jim_EvalExpression(interp, argv[1]);
}
- else {
- Jim_WrongNumArgs(interp, 1, argv, "expression ?...?");
- return JIM_ERR;
- }
- if (retcode != JIM_OK)
- return retcode;
- return JIM_OK;
+ Jim_WrongNumArgs(interp, 1, argv, "expression");
+ return JIM_ERR;
}
/* [break] */