bug fix. Didn't check for division by zero

This commit is contained in:
Francesco Cozzuto
2022-04-15 19:02:52 +02:00
parent 99b47fc824
commit 3117e7339e
+10 -3
View File
@@ -324,13 +324,20 @@ static Object *do_math_op(Object *lop, Object *rop, Opcode opcode, Heap *heap, E
assert(lop != NULL); assert(lop != NULL);
assert(rop != NULL); assert(rop != NULL);
#define APPLY(x, y, z, id) \ #define APPLY(x, y, z, id) \
switch(opcode) \ switch(opcode) \
{ \ { \
case OPCODE_ADD: (z) = (x) + (y); break; \ case OPCODE_ADD: (z) = (x) + (y); break; \
case OPCODE_SUB: (z) = (x) - (y); break; \ case OPCODE_SUB: (z) = (x) - (y); break; \
case OPCODE_MUL: (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; \ default: assert(0); break; \
} }