From 90add5db4515dd5f2c1267edcd821c6e370559db Mon Sep 17 00:00:00 2001 From: matz Date: Thu, 27 Nov 2008 16:01:54 +0000 Subject: [PATCH] * numeric.c (flodivmod): floating point division should raise ZeroDivisionError as integer division. [incompatible] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ numeric.c | 1 + test/ruby/test_float.rb | 4 +--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index cbdf67c8cf..08739594b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Nov 28 00:12:00 2008 Yukihiro Matsumoto + + * numeric.c (flodivmod): floating point division should raise + ZeroDivisionError as integer division. [incompatible] + Thu Nov 27 23:54:37 2008 Yukihiro Matsumoto * gc.c (gc_mark): still needs to check stack depth during GC. diff --git a/numeric.c b/numeric.c index c2f5e60c16..29497b0648 100644 --- a/numeric.c +++ b/numeric.c @@ -678,6 +678,7 @@ flodivmod(double x, double y, double *divp, double *modp) { double div, mod; + if (y == 0.0) rb_num_zerodiv(); #ifdef HAVE_FMOD mod = fmod(x, y); #else diff --git a/test/ruby/test_float.rb b/test/ruby/test_float.rb index 5d7bbb178b..e3ceaed6ad 100644 --- a/test/ruby/test_float.rb +++ b/test/ruby/test_float.rb @@ -172,9 +172,7 @@ class TestFloat < Test::Unit::TestCase assert_raise(TypeError) { 2.0.divmod(nil) } inf = 1.0 / 0.0 - a, b = inf.divmod(0) - assert(a.infinite?) - assert(b.nan?) + assert_raise(ZeroDivisionError) {inf.divmod(0)} a, b = (2.0**32).divmod(1.0) assert_equal(2**32, a)