[#28337] constant look up order in CVS HEAD — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

15 messages 2006/02/18
[#28338] Re: constant look up order in CVS HEAD — Tanaka Akira <akr@...17n.org> 2006/02/19

In article <1140229116.805371.31930.nullmailer@x31.priv.netlab.jp>,

[#28341] Re: constant look up order in CVS HEAD — GOTOU Yuuzou <gotoyuzo@...> 2006/02/19

In message <87lkw8xfay.fsf@m17n.org>,

[#28342] Re: constant look up order in CVS HEAD — Yukihiro Matsumoto <matz@...> 2006/02/19

まつもと ゆきひろです

[ruby-dev:28398] Re: ruby-1.8 cvs head and 64bit time_t

From: Yukihiro Matsumoto <matz@...>
Date: 2006-02-26 23:54:26 UTC
List: ruby-dev #28398
まつもと ゆきひろです

In message "Re: [ruby-dev:28396] ruby-1.8 cvs head and 64bit time_t"
    on Sun, 26 Feb 2006 23:45:53 +0900, arton <artonx@yahoo.co.jp> writes:

|ruby-1.8のcvs headをVC++8でmakeするとtime_tが64ビットになった関係でTime
|クラスを利用するテスト(たとえばyaml)の幾つかがフェイラーになります。
|原因は、VC++の場合についてはtime_tは64ビットになったものの、Win32が提供
|するstruct timevalのメンバーが32ビットのままなので、struct timevalにMSB
|が立っている値が設定されると取り出し時に符号拡張されて負値になるからです。
|たとえばTime.atの引数がFixnumの場合は負値チェックに引っかかりますが、
|Rationalを引数にした場合などでこの状態になります。
|とりあえずtime_tが64ビットかつWin32の場合に符号拡張を抑制するパッチを
|http://arton.no-ip.info/data/time.patch に作ってみましたが、struct
|timevalを利用しないようにするといった将来的に時刻表現が64ビット化される
|ことを見越したもっとうまいやり方があると思いますので、検討していただけな
|いでしょうか。

うーん、よくわかんなかったです。

VC++のtime_t 64bit化対応が不十分なために一時的に対応が必要な
のか、そもそも64bit time_tとstruct timevalは相性が悪いので
struct timevalは排除されるべきなのか、その辺がよく分からない
からです。もうちょっと事情を解説してもらえませんか?

In This Thread