Avoid division by zero in rational_to_f().

This commit is contained in:
Yukihiro "Matz" Matsumoto
2020-12-24 23:16:49 +09:00
parent 4e90d6938a
commit 3419426dbf
+8 -1
View File
@@ -192,7 +192,14 @@ static mrb_value
rational_to_f(mrb_state *mrb, mrb_value self)
{
struct mrb_rational *p = rational_ptr(mrb, self);
mrb_float f = (mrb_float)p->numerator / (mrb_float)p->denominator;
mrb_float f;
if (p->denominator == 0.0) {
f = INFINITY;
}
else {
f = (mrb_float)p->numerator / (mrb_float)p->denominator;
}
return mrb_float_value(mrb, f);
}