[#15357] Regexp literal and Regexp.new() — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

14 messages 2001/12/05
[#15358] Regexp in UTF-8 (Re: Regexp literal and Regexp.new()) — TAKAHASHI Masayoshi <maki@...> 2001/12/05

高橋征義です。むーん、問題のありかが違ったかも。

[#15435] Time#utcoff — Tanaka Akira <akr@...17n.org>

In article <hvosnahj702.fsf@coulee.a02.aist.go.jp>,

20 messages 2001/12/13
[#15436] Re: Time#utcoff — matz@... (Yukihiro Matsumoto) 2001/12/14

まつもと ゆきひろです

[#15505] ERb — m_seki@...

74 messages 2001/12/20
[#15560] Re: ERb — Tanaka Akira <akr@...17n.org> 2001/12/27

In article <20011220114249J.seki@mr.nasu.toshiba.co.jp>,

[#15879] Re: ERb — m_seki@... 2002/02/12

[#15884] Re: ERb — Tanaka Akira <akr@...17n.org> 2002/02/14

In article <m3eljr5o9m.wl@edwin.mva.biglobe.ne.jp>,

[#15885] Re: ERb — m_seki@... 2002/02/14

[#15886] Re: ERb — m_seki@... 2002/02/14

[#15887] Re: ERb — TAKAHASHI Masayoshi <maki@...> 2002/02/14

高橋征義です。

[#15888] Re: ERb — m_seki@... 2002/02/14

[#15896] Re: ERb — Tanaka Akira <akr@...17n.org> 2002/02/15

In article <20020215085405G.seki@mr.nasu.toshiba.co.jp>,

[#15898] Re: ERb — m_seki@... 2002/02/15

[#15900] Re: ERb — TADA Tadashi <sho@...> 2002/02/16

ただただしです。

[#15901] Re: ERb — m_seki@... 2002/02/16

[#15906] Re: ERb — matz@... (Yukihiro Matsumoto) 2002/02/17

まつもと ゆきひろです

[#15909] 1.6 の寿命 (Re: Re: ERb) — Koji Arai <JCA02266@...> 2002/02/17

新井です。

[#15507] fileutils (2) — Minero Aoki <aamine@...>

あおきです。

30 messages 2001/12/20
[#15512] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/20

高橋征義です。

[#15513] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/21

あおきです。

[#15515] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/21

高橋征義です。結論は最後に。

[#15516] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/21

あおきです。

[#15533] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/22

高橋征義です。

[#15536] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/24

あおきです。

[#15540] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/24

高橋征義です。

[#15545] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/24

あおきです。

[#15557] Re: fileutils (2) — TAKAHASHI Masayoshi <maki@...> 2001/12/26

高橋征義です。

[#15567] Re: fileutils (2) — Minero Aoki <aamine@...> 2001/12/27

あおきです。

[#15573] [patch] resolv.rb for win32 platform — Tietew <tietew-ml-ruby-dev@...>

Tietew です。

22 messages 2001/12/28

[ruby-dev:15450] Re: Time#utcoff

From: Tanaka Akira <akr@...17n.org>
Date: 2001-12-14 10:40:00 UTC
List: ruby-dev #15450
In article <1008320813.231850.10341.nullmailer@ev.netlab.jp>,
  matz@ruby-lang.org (Yukihiro Matsumoto) writes:

> それ変ですねえ。

うぅ、これは間違いだったようです。

akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c29d868c6dff)'
Tue Dec 31 23:59:59 PST 2147483647
akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c29d868c6e00)'
Wed Jan 01 00:00:00 PST -2147483648
akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c2ab7c5519ff)'
Wed Dec 31 23:59:59 PST -2147481749
akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(0xf0c2ab7c551a00)'
-e:1:in `inspect': localtime error (ArgumentError)
        from -e:1:in `p'
        from -e:1

どちらもこういう挙動になります。64bit 限界までは使えないんですねぇ。

> ですから、SIZEOF_INT < SIZEOF_LONG (このケース)では、
> NUM2LONG()とNUM2INT()は違うものだと思うのですが。
> どっちかというと rb_num2long() の実装のバグとかじゃないんで
> すかねえ。

これも撤回します。

akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63))'
-e:1:in `at': time must be positive (ArgumentError)
        from -e:1
akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at((1 << 63) -1)'
-e:1:in `inspect': localtime error (ArgumentError)
        from -e:1:in `p'
        from -e:1

よく考えたら 1 << 63 は signed 64bit には収まらないから問題ないんですね。
(最初から気づけよ...)

でも他の問題もあるようです。少なくとも glibc のくせに negative time_t
が使えないというのはおかしいというのがあります。

akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63))'
-e:1:in `at': time must be positive (ArgumentError)
        from -e:1

どうやら configure.in の -0x80000000 というのが問題のようです。

Standard C http://www-ccs.ucsd.edu/c/ を調べてみると、0x80000000 は
hexadecimal integer constant であり、unsigned int (32bit) に収まるので、
unsigned int になり、-0x80000000 は 0x80000000 になって、それが time_t
(64bit signed inteter)になって 0x0000000080000000 になるようですね。そ
うすると意図せざる未来の時刻が返ってきて失敗すると。

hexadecimal integer constant じゃなくて decimal integer constant にす
ると unsigned int じゃなくて long になってうまくいくようなので
-2147483648 とすると、

akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63))'
-e:1:in `inspect': localtime error (ArgumentError)
        from -e:1:in `p'
        from -e:1
akr@usf-cf-alpha-linux-1:~/ruby/ruby-src$ ./ruby -e 'p Time.at(-(1 << 63) - 1)'
-e:1:in `at': bignum too big to convert into `int' (RangeError)
        from -e:1

となって、まぁ、あんまりはっぴーじゃありませんが予期された結果になりま
す。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)

In This Thread