diff options
author | Steve Bennett <steveb@workware.net.au> | 2017-04-07 09:14:52 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2017-04-07 11:10:27 +1000 |
commit | d139d42051b3539970ff5ec7fca6deb311e7307c (patch) | |
tree | 1940c2fc0b4482b007ea6dfaba47e24aab9c075e | |
parent | 952c8e665af192ad9b1d7a779b6954311c02e2d6 (diff) | |
download | jimtcl-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.c | 7 | ||||
-rw-r--r-- | regtest.tcl | 5 |
2 files changed, 11 insertions, 1 deletions
@@ -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 ---" |