From: tadayoshi funaba Date: 2011-03-26T12:32:15+09:00 Subject: [ruby-dev:43357] [Ruby 1.9 - Feature #4529][Rejected] date_core と long 型 Issue #4529 has been updated by tadayoshi funaba. Status changed from Assigned to Rejected 現在はかなり制限をきつくしているので影響はないと思いますが jd を long にしているのは無意味というわけではないと思います。 もし型が違っているところがあれば、それは間違いだと思うので直せばいいと思います。 ---------------------------------------- Feature #4529: date_core と long 型 http://redmine.ruby-lang.org/issues/4529 Author: Yui NARUSE Status: Rejected Priority: Normal Assignee: tadayoshi funaba Category: ext Target version: おそらく既にご存じの通り、最近 date_core も含めて ext 中の shorten-64-to-32 を直しています。 それに際して date_core をいじっていて気づいたのですが、ユリウス日や年を long で保持したり int で保持したりしています。 int と long が混在していると、long から int へのキャスト時にオーバーフローが起こりえますし、 そもそも long は * 環境によってサイズが違う (int も 理屈の上では違うはずだが、CRuby では 32bit しか確認してない) * long は mswin64 でだけポインタとサイズが違うので、Unix な人には気づきづらいバグの温床になる というような懸念があるので、特に理由が無いのであれば、int にするか、int64_t にするかした方がよいかと思います。 (CRuby は C90 だが、int64_t を configure で定義している) 例えば int に統一する場合のパッチは以下の通りです -- http://redmine.ruby-lang.org