From 0a66e143071d423b118e677c5e5b1a8a77a2923b Mon Sep 17 00:00:00 2001 From: Ben10do Date: Thu, 26 Jan 2017 18:16:54 +0000 Subject: [PATCH] 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. --- src/asm/rpn.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/asm/rpn.c b/src/asm/rpn.c index 3a8dba27..2bc9d94c 100644 --- a/src/asm/rpn.c +++ b/src/asm/rpn.c @@ -316,6 +316,9 @@ rpn_DIV(struct Expression * expr, struct Expression * src1, struct Expression * src2) { joinexpr(); + if (src2->nVal == 0) { + fatalerror("division by zero"); + } expr->nVal = (expr->nVal / src2->nVal); pushbyte(expr, RPN_DIV); } @@ -325,6 +328,9 @@ rpn_MOD(struct Expression * expr, struct Expression * src1, struct Expression * src2) { joinexpr(); + if (src2->nVal == 0) { + fatalerror("division by zero"); + } expr->nVal = (expr->nVal % src2->nVal); pushbyte(expr, RPN_MOD); }