summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-rational/src/rational.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-12-24 23:16:49 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-12-24 23:16:49 +0900
commit3419426dbf8086a933097175970d4fa585b1d1ef (patch)
tree23c6f6c33cc38dea653810dc999c7bfe84c3db14 /mrbgems/mruby-rational/src/rational.c
parent4e90d6938a44f4f108fcb60f846a905f1969b9f8 (diff)
downloadmruby-3419426dbf8086a933097175970d4fa585b1d1ef.tar.gz
mruby-3419426dbf8086a933097175970d4fa585b1d1ef.zip
Avoid division by zero in `rational_to_f()`.
Diffstat (limited to 'mrbgems/mruby-rational/src/rational.c')
-rw-r--r--mrbgems/mruby-rational/src/rational.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c
index 6d94cb21f..1feb2530e 100644
--- a/mrbgems/mruby-rational/src/rational.c
+++ b/mrbgems/mruby-rational/src/rational.c
@@ -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);
}