mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
numeric.c: avoid division by zero
same as r65642. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
ed42b0102d
commit
a6e887153e
1 changed files with 6 additions and 3 deletions
|
@ -929,8 +929,11 @@ nurat_div(VALUE self, VALUE other)
|
||||||
other, ONE, '/');
|
other, ONE, '/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (RB_FLOAT_TYPE_P(other))
|
else if (RB_FLOAT_TYPE_P(other)) {
|
||||||
return DBL2NUM(nurat_to_double(self) / RFLOAT_VALUE(other));
|
double d = nurat_to_double(self);
|
||||||
|
VALUE v = rb_float_new(d);
|
||||||
|
return rb_flo_div_flo(v, other);
|
||||||
|
}
|
||||||
else if (RB_TYPE_P(other, T_RATIONAL)) {
|
else if (RB_TYPE_P(other, T_RATIONAL)) {
|
||||||
if (f_zero_p(other))
|
if (f_zero_p(other))
|
||||||
rb_num_zerodiv();
|
rb_num_zerodiv();
|
||||||
|
@ -968,7 +971,7 @@ nurat_fdiv(VALUE self, VALUE other)
|
||||||
{
|
{
|
||||||
VALUE div;
|
VALUE div;
|
||||||
if (f_zero_p(other))
|
if (f_zero_p(other))
|
||||||
return DBL2NUM(nurat_to_double(self) / 0.0);
|
return nurat_div(self, rb_float_new(0.0));
|
||||||
if (FIXNUM_P(other) && other == LONG2FIX(1))
|
if (FIXNUM_P(other) && other == LONG2FIX(1))
|
||||||
return nurat_to_f(self);
|
return nurat_to_f(self);
|
||||||
div = nurat_div(self, other);
|
div = nurat_div(self, other);
|
||||||
|
|
Loading…
Reference in a new issue