Project

General

Profile

Actions

Feature #4529

closed

date_core と long 型

Added by naruse (Yui NARUSE) about 13 years ago. Updated almost 13 years ago.

Status:
Rejected
Target version:
-
[ruby-dev:43355]

Description

=begin
おそらく既にご存じの通り、最近 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 に統一する場合のパッチは以下の通りです

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0