aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-04-07 09:14:52 +1000
committerSteve Bennett <steveb@workware.net.au>2017-04-07 11:10:27 +1000
commitd139d42051b3539970ff5ec7fca6deb311e7307c (patch)
tree1940c2fc0b4482b007ea6dfaba47e24aab9c075e
parent952c8e665af192ad9b1d7a779b6954311c02e2d6 (diff)
downloadjimtcl-d139d42051b3539970ff5ec7fca6deb311e7307c.zip
jimtcl-d139d42051b3539970ff5ec7fca6deb311e7307c.tar.gz
jimtcl-d139d42051b3539970ff5ec7fca6deb311e7307c.tar.bz2
Fix / command: divide by zero
Avoid exception on integer divided by zero Reported-by: Ryan Whitworth <me@ryanwhitworth.com> Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim.c7
-rw-r--r--regtest.tcl5
2 files changed, 11 insertions, 1 deletions
diff --git a/jim.c b/jim.c
index 291c9ac..74c16d3 100644
--- a/jim.c
+++ b/jim.c
@@ -11635,8 +11635,13 @@ static int JimSubDivHelper(Jim_Interp *interp, int argc, Jim_Obj *const *argv, i
}
if (op == JIM_EXPROP_SUB)
res -= wideValue;
- else
+ else {
+ if (wideValue == 0) {
+ Jim_SetResultString(interp, "Division by zero", -1);
+ return JIM_ERR;
+ }
res /= wideValue;
+ }
}
Jim_SetResultInt(interp, res);
return JIM_OK;
diff --git a/regtest.tcl b/regtest.tcl
index 4f4b459..d84e72c 100644
--- a/regtest.tcl
+++ b/regtest.tcl
@@ -267,6 +267,11 @@ foreach i {1 2 3 4} {
}
puts "TEST 35 PASSED"
+# REGTEST 36
+# divide integer by integer zero
+catch {/ 1 0}
+puts "TEST 36 PASSED"
+
# TAKE THE FOLLOWING puts AS LAST LINE
puts "--- ALL TESTS PASSED ---"