Fix division by zero crashes in instructions

Previously, rgbasm could crash with a floating point exception if an
instruction includes a division or modulo by 0. Fixes #49.
This commit is contained in:
Ben10do
2017-01-26 18:16:54 +00:00
parent 547abfefc1
commit 0a66e14307

View File

@@ -316,6 +316,9 @@ rpn_DIV(struct Expression * expr, struct Expression * src1,
struct Expression * src2) struct Expression * src2)
{ {
joinexpr(); joinexpr();
if (src2->nVal == 0) {
fatalerror("division by zero");
}
expr->nVal = (expr->nVal / src2->nVal); expr->nVal = (expr->nVal / src2->nVal);
pushbyte(expr, RPN_DIV); pushbyte(expr, RPN_DIV);
} }
@@ -325,6 +328,9 @@ rpn_MOD(struct Expression * expr, struct Expression * src1,
struct Expression * src2) struct Expression * src2)
{ {
joinexpr(); joinexpr();
if (src2->nVal == 0) {
fatalerror("division by zero");
}
expr->nVal = (expr->nVal % src2->nVal); expr->nVal = (expr->nVal % src2->nVal);
pushbyte(expr, RPN_MOD); pushbyte(expr, RPN_MOD);
} }