summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-01-25 15:43:46 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-01-25 15:44:59 +0900
commitefef4541aa97460b80618af369879881b376cc30 (patch)
tree3282a575f5080cf6b5ed044d653a64ed1799560d
parent23e5c08e310e9638846fb43bfef0be1bb259da49 (diff)
downloadmruby-efef4541aa97460b80618af369879881b376cc30.tar.gz
mruby-efef4541aa97460b80618af369879881b376cc30.zip
Fix a bug for the case `frexp()` return `Infinity`.
-rw-r--r--mrbgems/mruby-rational/src/rational.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c
index c5df52a08..0d317cc0f 100644
--- a/mrbgems/mruby-rational/src/rational.c
+++ b/mrbgems/mruby-rational/src/rational.c
@@ -183,6 +183,7 @@ static void
float_decode_internal(mrb_state *mrb, mrb_float f, mrb_float *rf, int *n)
{
f = (mrb_float)frexp_rat(f, n);
+ if (isinf(f)) rat_overflow(mrb);
f = (mrb_float)ldexp_rat(f, RAT_MANT_DIG);
*n -= RAT_MANT_DIG;
*rf = f;