Fix: Add better handling of division by 0 (int and float) for MOD()#2994
Fix: Add better handling of division by 0 (int and float) for MOD()#2994santorofer wants to merge 1 commit into
Conversation
- Move relevant MOD functions into TdiDive.c (i.e mod_float, mod_bin, OperateBin, Tdi3Mod) - Add new DIV_BY_ZERO in tdishr_messages.xml - Make use of such new error message - Refactor switch statement
|
I've glanced at this PR and it looks good, however I will do a more thorough review later. Here are some initial comments . . .
|
heidthecamp
left a comment
There was a problem hiding this comment.
Over all good. But there was an erroneous white space change
|
I concur that floating point behavior should remain. It is complicated but useful that operators of $roperand return $roperand. maybe we should return $roperand regardless of input types and throw a new error when trying to convert $ROPERAND to integer types? |
This is intended to be a discussion, there are several ways this can be handled for integers. Regardless, $ROPRAND is well suited for handling divide by zero errors for floating points.
Option 1: We could make both DIVIDE and MOD return the new TdiDIV_BY_ZERO error when dividing by zero
Option 2: We could make only MOD return this, and leave DIVIDE returning 0
Option 3: Make MOD return 0 as well and not add TdiDIV_BY_ZERO
This moves MOD (mod_float, mod_bin, OperateBin, Tdi3Mod) into TdiDivide.c
This currently adds a new TdiDIV_BY_ZERO error to tdishr_messages.xml (see above)
This is intended to fix the error handling for
0 % 0, which currently segfaults.