From: "U.Nakamura" Date: 2001-12-21T21:22:31+09:00 Subject: [ruby-dev:15526] use of uninitialized value on time.c こんにちは、なかむら(う)です。 time.cの今日の変更(1.49→1.50)ですが、time_plus()とtime_minus() の if (f != (double)sec || d >= 1.0 || d <= -1.0) { ですが、この時点ではsecにはまだ何も代入されていないです。 察するに、下記のパッチが意図されたものではないかと思うのです が、いかがなもんでしょう?  Index: time.c =================================================================== RCS file: /src/ruby/time.c,v retrieving revision 1.50 diff -u -2 -p -r1.50 time.c --- time.c 2001/12/21 09:23:21 1.50 +++ time.c 2001/12/21 12:19:59 @@ -953,4 +953,6 @@ time_plus(time1, time2) v = NUM2DBL(time2); d = modf(v, &f); + usec = tobj->tv.tv_usec + (time_t)d*1e6; + sec = tobj->tv.tv_sec + (time_t)f; if (f != (double)sec || d >= 1.0 || d <= -1.0) { rb_raise(rb_eRangeError, "time + %f out of Time range", v); @@ -960,9 +962,5 @@ time_plus(time1, time2) rb_raise(rb_eArgError, "time must be positive"); } -#endif - usec = tobj->tv.tv_usec + (time_t)d*1e6; - sec = tobj->tv.tv_sec + (time_t)f; - -#ifdef NEGATIVE_TIME_T +#else if ((tobj->tv.tv_sec >= 0 && f >= 0 && sec < 0) || (tobj->tv.tv_sec <= 0 && f <= 0 && sec > 0)) { @@ -999,4 +997,6 @@ time_minus(time1, time2) v = NUM2DBL(time2); d = modf(v, &f); + usec = tobj->tv.tv_usec - (time_t)(d*1e6); + sec = tobj->tv.tv_sec - (time_t)f; if (f != (double)sec || d >= 1.0 || d <= -1.0) { rb_raise(rb_eRangeError, "time - %f out of Time range", v); @@ -1006,8 +1006,5 @@ time_minus(time1, time2) rb_raise(rb_eArgError, "time must be positive"); } -#endif - usec = tobj->tv.tv_usec - (time_t)(d*1e6); - sec = tobj->tv.tv_sec - (time_t)f; -#ifdef NEGATIVE_TIME_T +#else if ((tobj->tv.tv_sec <= 0 && f >= 0 && sec > 0) || (tobj->tv.tv_sec >= 0 && f <= 0 && sec < 0)) {  それでは。 -- U.Nakamura