summaryrefslogtreecommitdiffhomepage
path: root/src/numeric.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-11-19 03:12:42 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-11-19 22:49:50 +0900
commit996417cabfd4f9422ab00530874837e2cf6a2cf6 (patch)
tree516510b9ff952ff59b940abee3a5f5a20daf12ad /src/numeric.c
parent09abdcb5e899eb0e48b9ed11e93820eac8c511e4 (diff)
downloadmruby-996417cabfd4f9422ab00530874837e2cf6a2cf6.tar.gz
mruby-996417cabfd4f9422ab00530874837e2cf6a2cf6.zip
integer range check was moved to mrb_flo_to_fixnum(); ref #3025
Diffstat (limited to 'src/numeric.c')
-rw-r--r--src/numeric.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/numeric.c b/src/numeric.c
index 41820ff5c..bd90f6168 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -964,7 +964,12 @@ mrb_flo_to_fixnum(mrb_state *mrb, mrb_value x)
if (isnan(d)) {
mrb_raise(mrb, E_FLOATDOMAIN_ERROR, "NaN");
}
- z = (mrb_int)d;
+ if (FIXABLE(d)) {
+ z = (mrb_int)d;
+ }
+ else {
+ mrb_raisef(mrb, E_ARGUMENT_ERROR, "number (%S) too big for integer", x);
+ }
}
return mrb_fixnum_value(z);
}