ruby-changes:5990
From: nobu <ko1@a...>
Date: Sat, 21 Jun 2008 16:21:29 +0900 (JST)
Subject: [ruby-changes:5990] Ruby:r17498 (trunk): * numeric.c (flo_round): get rid of overflow.
nobu 2008-06-21 16:21:10 +0900 (Sat, 21 Jun 2008) New Revision: 17498 Modified files: trunk/ChangeLog trunk/numeric.c Log: * numeric.c (flo_round): get rid of overflow. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/numeric.c?r1=17498&r2=17497&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=17498&r2=17497&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 17497) +++ ChangeLog (revision 17498) @@ -1,3 +1,7 @@ +Sat Jun 21 16:21:07 2008 Nobuyoshi Nakada <nobu@r...> + + * numeric.c (flo_round): get rid of overflow. + Sat Jun 21 15:57:15 2008 Nobuyoshi Nakada <nobu@r...> * lib/rdoc/parsers/parse_rb.rb (RDoc#collect_first_comment): skip Index: numeric.c =================================================================== --- numeric.c (revision 17497) +++ numeric.c (revision 17498) @@ -1299,11 +1299,16 @@ while (--i >= 0) f = f*10.0; - if (ndigits < 0) number /= f; - else number *= f; - number = round(number); - if (ndigits < 0) number *= f; - else number /= f; + if (isinf(f)) { + if (ndigits < 0) number = 0; + } + else { + if (ndigits < 0) number /= f; + else number *= f; + number = round(number); + if (ndigits < 0) number *= f; + else number /= f; + } if (ndigits > 0) return DOUBLE2NUM(number); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/