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

ruby-changes:4408

From: ko1@a...
Date: Fri, 4 Apr 2008 02:21:04 +0900 (JST)
Subject: [ruby-changes:4408] matz - Ruby:r15899 (ruby_1_8): * range.c (range_step): should not round step into integer if

matz	2008-04-04 02:20:48 +0900 (Fri, 04 Apr 2008)

  New Revision: 15899

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/range.c
    branches/ruby_1_8/version.h

  Log:
    * range.c (range_step): should not round step into integer if
      begin and end are numeric.  [ruby-core:15990]

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/range.c?r1=15899&r2=15898&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=15899&r2=15898&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/version.h?r1=15899&r2=15898&diff_format=u

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 15898)
+++ ruby_1_8/ChangeLog	(revision 15899)
@@ -1,3 +1,8 @@
+Fri Apr  4 02:17:06 2008  Yukihiro Matsumoto  <matz@r...>
+
+	* range.c (range_step): should not round step into integer if
+	  begin and end are numeric.  [ruby-core:15990]
+
 Tue Apr  1 14:43:38 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* configure.in: get rid of empty expansion.
Index: ruby_1_8/version.h
===================================================================
--- ruby_1_8/version.h	(revision 15898)
+++ ruby_1_8/version.h	(revision 15899)
@@ -1,7 +1,7 @@
 #define RUBY_VERSION "1.8.6"
-#define RUBY_RELEASE_DATE "2008-04-01"
+#define RUBY_RELEASE_DATE "2008-04-03"
 #define RUBY_VERSION_CODE 186
-#define RUBY_RELEASE_CODE 20080401
+#define RUBY_RELEASE_CODE 20080403
 #define RUBY_PATCHLEVEL 5000
 
 #define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
 #define RUBY_VERSION_TEENY 6
 #define RUBY_RELEASE_YEAR 2008
 #define RUBY_RELEASE_MONTH 4
-#define RUBY_RELEASE_DAY 1
+#define RUBY_RELEASE_DAY 3
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
Index: ruby_1_8/range.c
===================================================================
--- ruby_1_8/range.c	(revision 15898)
+++ ruby_1_8/range.c	(revision 15899)
@@ -322,7 +322,6 @@
     else {
 	VALUE tmp = rb_to_int(step);
 	unit = rb_cmpint(tmp, step, INT2FIX(0));
-	step = tmp;
     }
     if (unit < 0) {
 	rb_raise(rb_eArgError, "step can't be negative");
@@ -354,8 +353,10 @@
 	    rb_iterate((VALUE(*)_((VALUE)))str_step, (VALUE)args, step_i,
 			(VALUE)iter);
 	}
-	else if (rb_obj_is_kind_of(b, rb_cNumeric)) {
-	    ID c = rb_intern(EXCL(range) ? "<" : "<=");
+	else if (rb_obj_is_kind_of(b, rb_cNumeric) ||
+		 !NIL_P(rb_check_to_integer(b, "to_int")) ||
+		 !NIL_P(rb_check_to_integer(e, "to_int"))) {
+	    ID c = EXCL(range) ? '<' : rb_intern("<=");
 
 	    while (RTEST(rb_funcall(b, c, 1, e))) {
 		rb_yield(b);

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

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