まつもと ゆきひろです

In message "[ruby-list:7703] Out of Range"
    on 98/04/22, 助田 雅紀 <masaki.suketa / tonen.co.jp> writes:

|以下のコードを実行すると Out of range のエラーが出ます。
|日付けが 08 or 09 だと引っかかるようです。
|08, 09 をrb_obj2intで数値に変換したときに 0が返されるよ
|うです。 

あ,しまった.またやってしまった.
以下のパッチでどうでしょう?

ruby 1.1b9_13に対するものです.ruby-listよりruby-devであるべ
きかなあ.

--- time.c	1998/04/20 06:20:35	1.1.1.2.2.8
+++ time.c	1998/04/22 03:05:17
@@ -152,2 +152,13 @@
 
+static int
+obj2int(obj)
+    VALUE obj;
+{
+    if (TYPE(obj) == T_STRING) {
+	obj = str2inum(RSTRING(obj)->ptr, 10);
+    }
+
+    return NUM2INT(obj);
+}
+
 static void
@@ -173,3 +184,3 @@
 
-    args[0] = rb_obj2int(v[0]);
+    args[0] = obj2int(v[0]);
     if (args[0] < 70) args[0] += 100;
@@ -191,3 +202,3 @@
 	    if ('0' <= c && c <= '9') {
-		args[1] = rb_obj2int(v[1])-1;
+		args[1] = obj2int(v[1])-1;
 	    }
@@ -196,3 +207,3 @@
     else {
-	args[1] = rb_obj2int(v[1]) - 1;
+	args[1] = obj2int(v[1]) - 1;
     }
@@ -202,3 +213,3 @@
     else {
-	args[2] = rb_obj2int(v[2]);
+	args[2] = obj2int(v[2]);
     }
@@ -209,3 +220,3 @@
 	else {
-	    args[i] = rb_obj2int(v[i]);
+	    args[i] = obj2int(v[i]);
 	}