mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
integer range check was moved to mrb_flo_to_fixnum(); ref #3025
This commit is contained in:
@@ -796,10 +796,6 @@ retry:
|
||||
bin_retry:
|
||||
switch (mrb_type(val)) {
|
||||
case MRB_TT_FLOAT:
|
||||
if (FIXABLE(mrb_float(val))) {
|
||||
val = mrb_fixnum_value((mrb_int)mrb_float(val));
|
||||
goto bin_retry;
|
||||
}
|
||||
val = mrb_flo_to_fixnum(mrb, val);
|
||||
if (mrb_fixnum_p(val)) goto bin_retry;
|
||||
break;
|
||||
|
||||
+6
-1
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user