mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 21:49:06 +02:00
* numeric.c (num_div): should raise ZeroDivisionError.
* numeric.c (fix_divide): ditto. * test/ruby/test_numeric.rb (TestNumeric::test_divmod): avoid ZeroDivisionError in tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16650 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8a3f0ce44a
commit
77446d45a8
3 changed files with 16 additions and 4 deletions
|
@ -288,6 +288,7 @@ static VALUE num_floor(VALUE num);
|
|||
static VALUE
|
||||
num_div(VALUE x, VALUE y)
|
||||
{
|
||||
if (rb_equal(INT2FIX(0), y)) rb_num_zerodiv();
|
||||
return num_floor(rb_funcall(x, '/', 1, y));
|
||||
}
|
||||
|
||||
|
@ -2261,11 +2262,15 @@ fix_divide(VALUE x, VALUE y, ID op)
|
|||
return rb_big_div(x, y);
|
||||
case T_FLOAT:
|
||||
{
|
||||
double div = (double)FIX2LONG(x) / RFLOAT_VALUE(y);
|
||||
double div;
|
||||
|
||||
if (op == '/') {
|
||||
div = (double)FIX2LONG(x) / RFLOAT_VALUE(y);
|
||||
return DOUBLE2NUM(div);
|
||||
}
|
||||
else {
|
||||
if (RFLOAT_VALUE(y) == 0) rb_num_zerodiv();
|
||||
div = (double)FIX2LONG(x) / RFLOAT_VALUE(y);
|
||||
return rb_dbl2big(floor(div));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue