diff --git a/eval.c b/eval.c index 8b886a9..b15f79a 100644 --- a/eval.c +++ b/eval.c @@ -222,11 +222,27 @@ object divide(object parameters) } else if (listLength(parameters) == 1) { - NUM(result) = 1/NUM(CAR(parameters)); + if (NUM(CAR(parameters)) != 0) + { + NUM(result) = 1/NUM(CAR(parameters)); + } + else + { + TYPE(result) = errorObject; + ERRMSG(result) = divisionByZeroError; + } } else { - NUM(result) = NUM(CAR(parameters))/NUM(add(CDR(parameters))); + if (NUM(add(CDR(parameters))) != 0) + { + NUM(result) = NUM(CAR(parameters))/NUM(add(CDR(parameters))); + } + else + { + TYPE(result) = errorObject; + ERRMSG(result) = divisionByZeroError; + } } return result;