From b79e96ae62bf61530c955053c61125f652c2a8fe Mon Sep 17 00:00:00 2001 From: mame Date: Thu, 15 Jul 2010 12:55:23 +0000 Subject: * numeric.c (fix_divide): must not use rb_rational_new1 for coercion because it returns an argument itself when canonical mode is set. [ruby-core:31279] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ numeric.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 30df76968b..f3ea7fc092 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Jul 15 21:43:35 2010 Yusuke Endoh + + * numeric.c (fix_divide): must not use rb_rational_new1 for coercion + because it returns an argument itself when canonical mode is set. + [ruby-core:31279] + Thu Jul 15 21:38:31 2010 Yusuke Endoh * proc.c (bm_free): fix memory leak. [ruby-core:30869] [Bug #3466] diff --git a/numeric.c b/numeric.c index 8b5423b884..eb3d4be9ff 100644 --- a/numeric.c +++ b/numeric.c @@ -2429,7 +2429,7 @@ fix_divide(VALUE x, VALUE y, ID op) case T_RATIONAL: if (op == '/' && FIX2LONG(x) == 1) return rb_rational_reciprocal(y); - return rb_funcall(rb_rational_new1(x), op, 1, y); + /* fall through */ default: return rb_num_coerce_bin(x, y, op); } -- cgit v1.2.3