From: matz@... (Yukihiro Matsumoto) Date: 1998-04-22T12:12:57+09:00 Subject: [ruby-list:7704] Re: Out of Range まつもと ゆきひろです In message "[ruby-list:7703] Out of Range" on 98/04/22, 助田 雅紀 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]); }