[#22503] can't require — IWATSUKI Hiroyuki <don@...>

岩月と申します。

94 messages 2004/01/06
[#22504] Re: can't require — nobu.nakada@... 2004/01/06

なかだです。

[#22505] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/06

まつもと ゆきひろです

[#22506] Re: can't require — IWATSUKI Hiroyuki <don@...> 2004/01/06

岩月と申します。

[#22509] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。

[#22513] Re: can't require — IWATSUKI Hiroyuki <don@...> 2004/01/07

岩月と申します。

[#22514] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22522] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。

[#22524] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22526] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。

[#22534] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22535] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/07

まつもと ゆきひろです

[#22536] Re: can't require — Tanaka Akira <akr@...17n.org> 2004/01/07

In article <1073474004.933446.5475.nullmailer@picachu.netlab.jp>,

[#22540] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22541] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。なかださんのコードで気になった点が3つあります。

[#22546] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22549] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/08

山本です。

[#22550] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/08

山本です。

[#22551] Re: can't require — nobu.nakada@... 2004/01/08

なかだです。

[#22571] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/11

山本です。

[#22667] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/22

山本です。

[#22668] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/22

まつもと ゆきひろです

[#22669] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/22

山本です。

[#22676] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/24

山本です。

[#22677] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/25

まつもと ゆきひろです

[#22678] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/25

山本です。

[#22679] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/25

山本です。

[#22680] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/25

まつもと ゆきひろです

[#22682] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/25

山本です。

[#22683] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/25

まつもと ゆきひろです

[#22686] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/26

山本です。

[#22687] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/26

山本です。

[#22697] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。

[#22700] Re: can't require — nobu.nakada@... 2004/01/27

なかだです。

[#22712] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。WinCVS + byacc + sed をインストールして、ビルドできるようになりました。

[#22714] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。

[#22716] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。

[#22725] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22729] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22734] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22736] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22738] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22739] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22740] Dir.glob (Re: Re: can't require) — nobu.nakada@... 2004/01/28

なかだです。

[#22741] Re: Dir.glob (Re: Re: can't require) — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22744] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22746] Re: Dir.glob (Re: Re: can't require) — nobu.nakada@... 2004/01/28

なかだです。

[#22747] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22748] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22750] Re: Dir.glob (Re: Re: can't require) — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22761] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22764] Re: Dir.glob (Re: Re: can't require) — nobu.nakada@... 2004/01/29

なかだです。

[#22766] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22770] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22772] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22774] Re: Dir.glob (Re: Re: can't require) — matz@... (Yukihiro Matsumoto) 2004/01/29

まつもと ゆきひろです

[#22688] output directory for extensions — nobu.nakada@...

なかだです。

14 messages 2004/01/26

[#22691] 次期リリースでの新規添付ライブラリ — "Kawaji, Shinya" <kawaji@...>

かわじ、です

18 messages 2004/01/26
[#22693] Re: 次期リリースでの新規添付ライブラリ — matz@... (Yukihiro Matsumoto) 2004/01/26

まつもと ゆきひろです

[#22694] Re: 次期リリースでの新規添付ライブラリ — matz@... (Yukihiro Matsumoto) 2004/01/26

まつもと ゆきひろです

[#22763] $: trick in test/* — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです。

21 messages 2004/01/29

[ruby-dev:22608] Time#[+-] when given a negative argument

From: siena@... (Siena. / SHINAGAWA, Norihide)
Date: 2004-01-17 18:21:14 UTC
List: ruby-dev #22608
Siena. です。

せっかく CVS アカウントをいただいたのにいろいろあって動けずじまいでした。
改めて、今後とも宜しくお願い致します。

さて、ruby/test/test_time.rb が Time#- でエラーになるので直してみました。
|RangeError: time - -28800.000000 out of Time range

うちは、time_t が unsigned long なので、
下記のキャストのために sec がとんでもない値になるのが原因でした。

ruby/time.c
|    time_t sec, usec;
|    double f, d, v;
(略)
|    sec = (time_t)f;

不恰好ですが、とりあえず次のテストはこのパッチで通るようになりました。
time_t が負数を受け付ける環境でも大丈夫だとは思うのですが、
どなたか試してみていただけないでしょうか。


# ruby/test/test_time.rb
require 'test/unit'

class TestTime < Test::Unit::TestCase
  def test_time_add()
    assert_equal(Time.utc(2000, 3, 21, 3, 30) + 3 * 3600,
                 Time.utc(2000, 3, 21, 6, 30))
    assert_equal(Time.utc(2000, 3, 21, 3, 30) + (-3 * 3600),
                 Time.utc(2000, 3, 21, 0, 30))
  end

  def test_time_sub()
    assert_equal(Time.utc(2000, 3, 21, 3, 30) - 3 * 3600,
                 Time.utc(2000, 3, 21, 0, 30))
    assert_equal(Time.utc(2000, 3, 21, 3, 30) - (-3 * 3600),
                 Time.utc(2000, 3, 21, 6, 30))
  end

  def test_time_time()
    assert_equal(Time.utc(2000, 3, 21, 3, 30)  \
                -Time.utc(2000, 3, 21, 0, 30), 3 * 3600)
    assert_equal(Time.utc(2000, 3, 21, 0, 30)  \
                -Time.utc(2000, 3, 21, 3, 30), -3 * 3600)
  end
end

Index: ruby/time.c
===================================================================
RCS file: /src/ruby/time.c,v
retrieving revision 1.92
diff -u -p -2 -r1.92 time.c
--- ruby/time.c	30 Dec 2003 16:36:05 -0000	1.92
+++ ruby/time.c	17 Jan 2004 17:51:27 -0000
@@ -1184,4 +1184,5 @@ time_plus(time1, time2)
     time_t sec, usec;
     double f, d, v;
+    int sign;
 
     GetTimeval(time1, tobj);
@@ -1192,4 +1193,6 @@ time_plus(time1, time2)
     v = NUM2DBL(time2);
     d = modf(v, &f);
+    sign = ( f < 0 ? -1 : 1 );
+    f *= sign;
     sec = (time_t)f;
     if (f != (double)sec) {
@@ -1197,14 +1200,14 @@ time_plus(time1, time2)
     }
 #ifndef NEGATIVE_TIME_T
-    if (f < 0 && -f >= tobj->tv.tv_sec) {
+    if (sign < 0 && f >= tobj->tv.tv_sec) {
 	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;
+    sec = tobj->tv.tv_sec + sign * sec;
 
 #ifdef NEGATIVE_TIME_T
-    if ((tobj->tv.tv_sec >= 0 && f >= 0 && sec < 0) ||
-	(tobj->tv.tv_sec <= 0 && f <= 0 && sec > 0)) {
+    if ((tobj->tv.tv_sec >= 0 && sign >= 0 && sec < 0) ||
+	(tobj->tv.tv_sec <= 0 && sign <= 0 && sec > 0)) {
 	rb_raise(rb_eRangeError, "time + %f out of Time range", v);
     }
@@ -1240,4 +1243,5 @@ time_minus(time1, time2)
     time_t sec, usec;
     double f, d, v;
+    int sign;
 
     GetTimeval(time1, tobj);
@@ -1254,4 +1258,6 @@ time_minus(time1, time2)
     v = NUM2DBL(time2);
     d = modf(v, &f);
+    sign = ( f < 0 ? -1 : 1 );
+    f *= sign;
     sec = (time_t)f;
     if (f != (double)sec) {
@@ -1259,13 +1265,13 @@ time_minus(time1, time2)
     }
 #ifndef NEGATIVE_TIME_T
-    if (f > 0 && f >= tobj->tv.tv_sec) {
+    if (sign > 0 && f >= tobj->tv.tv_sec) {
 	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;
+    sec = tobj->tv.tv_sec - sign * sec;
 #ifdef NEGATIVE_TIME_T
-    if ((tobj->tv.tv_sec <= 0 && f >= 0 && sec > 0) ||
-	(tobj->tv.tv_sec >= 0 && f <= 0 && sec < 0)) {
+    if ((tobj->tv.tv_sec <= 0 && sign >= 0 && sec > 0) ||
+	(tobj->tv.tv_sec >= 0 && sign <= 0 && sec < 0)) {
 	rb_raise(rb_eRangeError, "time - %f out of Time range", v);
     }


---
Siena. <mailto:siena@faculty.chiba-u.jp>

In This Thread

Prev Next