[前][次][番号順一覧][スレッド一覧]

ruby-changes:21012

From: marcandre <ko1@a...>
Date: Thu, 25 Aug 2011 07:58:04 +0900 (JST)
Subject: [ruby-changes:21012] marcandRe: r33061 (trunk): * numeric.c (int_round): Fix Integer#round

marcandre	2011-08-25 07:57:55 +0900 (Thu, 25 Aug 2011)

  New Revision: 33061

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33061

  Log:
    * numeric.c (int_round): Fix Integer#round [ruby-core:39096]

  Modified files:
    trunk/ChangeLog
    trunk/numeric.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 33060)
+++ ChangeLog	(revision 33061)
@@ -1,3 +1,7 @@
+Thu Aug 25 07:57:33 2011  Marc-Andre Lafortune  <ruby-core@m...>
+
+	* numeric.c (int_round): Fix Integer#round [ruby-core:39096]
+
 Thu Aug 25 07:00:00 2011  Koichi Sasada  <ko1@a...>
 
 	* vm_insnhelper.h, vm_insnhelper.c, vm.c, vm_method.c, insns.def:
Index: numeric.c
===================================================================
--- numeric.c	(revision 33060)
+++ numeric.c	(revision 33061)
@@ -3298,6 +3298,7 @@
 {
     VALUE n, f, h, r;
     int ndigits;
+    ID op;
 
     if (argc == 0) return num;
     rb_scan_args(argc, argv, "1", &n);
@@ -3324,7 +3325,8 @@
     h = rb_funcall(f, '/', 1, INT2FIX(2));
     r = rb_funcall(num, '%', 1, f);
     n = rb_funcall(num, '-', 1, r);
-    if (!RTEST(rb_funcall(r, '<', 1, h))) {
+    op = RTEST(rb_funcall(num, '<', 1, INT2FIX(0))) ? rb_intern("<=") : '<';
+    if (!RTEST(rb_funcall(r, op, 1, h))) {
 	n = rb_funcall(n, '+', 1, f);
     }
     return n;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]