From 3117e7339eee80063a7b184586aaabd9afaea5bd Mon Sep 17 00:00:00 2001 From: Francesco Cozzuto Date: Fri, 15 Apr 2022 19:02:52 +0200 Subject: [PATCH] bug fix. Didn't check for division by zero --- src/runtime/runtime.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index 28bfa8b..f4c4aab 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -324,13 +324,20 @@ static Object *do_math_op(Object *lop, Object *rop, Opcode opcode, Heap *heap, E assert(lop != NULL); assert(rop != NULL); - #define APPLY(x, y, z, id) \ - switch(opcode) \ + #define APPLY(x, y, z, id) \ + switch(opcode) \ { \ case OPCODE_ADD: (z) = (x) + (y); break; \ case OPCODE_SUB: (z) = (x) - (y); break; \ case OPCODE_MUL: (z) = (x) * (y); break; \ - case OPCODE_DIV: (z) = (x) / (y); break; \ + case OPCODE_DIV: \ + if((y) == 0) \ + { \ + Error_Report(error, 0, "Division by zero"); \ + return NULL; \ + } \ + (z) = (x) / (y); \ + break; \ default: assert(0); break; \ }