aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-04-07 09:16:35 +1000
committerSteve Bennett <steveb@workware.net.au>2017-04-07 11:10:46 +1000
commitcc83b696b6b5e4cef4e312782a3fff23d5cdb8ad (patch)
tree8089c23952876392345dfa9e61cdcb915a0c8426 /jim.c
parentd139d42051b3539970ff5ec7fca6deb311e7307c (diff)
downloadjimtcl-cc83b696b6b5e4cef4e312782a3fff23d5cdb8ad.zip
jimtcl-cc83b696b6b5e4cef4e312782a3fff23d5cdb8ad.tar.gz
jimtcl-cc83b696b6b5e4cef4e312782a3fff23d5cdb8ad.tar.bz2
expr: fix crash on invalid ternary order
expr {1 : 2 ? 3} Reported-by: Ryan Whitworth <me@ryanwhitworth.com> Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/jim.c b/jim.c
index 74c16d3..71c5d55 100644
--- a/jim.c
+++ b/jim.c
@@ -8791,7 +8791,11 @@ static int ExprCheckCorrectness(Jim_Interp *interp, Jim_Obj *exprObjPtr, ExprByt
ternary++;
}
else if (t->type == JIM_EXPROP_COLON || t->type == JIM_EXPROP_COLON_LEFT) {
- ternary--;
+ if (--ternary < 0) {
+ /* got : without preceding ? */
+ stacklen = 1;
+ break;
+ }
}
/* All operations and operands add one to the stack */