diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-12-24 23:16:49 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-12-24 23:16:49 +0900 |
| commit | 3419426dbf8086a933097175970d4fa585b1d1ef (patch) | |
| tree | 23c6f6c33cc38dea653810dc999c7bfe84c3db14 /mrbgems/mruby-rational/src/rational.c | |
| parent | 4e90d6938a44f4f108fcb60f846a905f1969b9f8 (diff) | |
| download | mruby-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.c | 9 |
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); } |
