From: WATANABE Tetsuya Date: 2001-12-22T05:26:32+09:00 Subject: [ruby-dev:15527] Re: Time.now + 1.5 (RangeError) 渡辺哲也です。 In message "[ruby-dev:15482] Re: Time.now + 1.5 (RangeError)" on 01/12/18, Yukihiro Matsumoto さん writes: |まつもと ゆきひろです | |In message "[ruby-dev:15476] Time.now + 1.5 (RangeError)" | on 01/12/17, WATANABE Hirofumi writes: ||このチェックは不要だと思います。 | |そうですね。ちょっと考えちがいをしてました。違うチェックを追 |加します。 これ関連だと思いますが ruby-1.7.2 2001-12-21 time.c にて sec 変数が初期化されていない状態で比較に使われていました。 意図が違うかもしれませんが、とりあえずということで次のよう にしてみました。私のコードだと modf が正しく動いているかど うかの確認程度なので、本当の意図とは違うと思うのですが... ------------------------------ --- /t/cvs/ruby/time.c Sat Dec 22 03:45:25 2001 +++ time.c Sat Dec 22 04:42:46 2001 @@ -952,7 +952,7 @@ } v = NUM2DBL(time2); d = modf(v, &f); - if (f != (double)sec || d >= 1.0 || d <= -1.0) { + if (f != (time_t)v || d >= 1.0 || d <= -1.0) { rb_raise(rb_eRangeError, "time + %f out of Time range", v); } #ifndef NEGATIVE_TIME_T @@ -998,7 +998,7 @@ } v = NUM2DBL(time2); d = modf(v, &f); - if (f != (double)sec || d >= 1.0 || d <= -1.0) { + if (f != (time_t)v || d >= 1.0 || d <= -1.0) { rb_raise(rb_eRangeError, "time - %f out of Time range", v); } #ifndef NEGATIVE_TIME_T ------------------------------