ruby-trunk-changes r67466 - r67470

今日は主に LLP64環境で hash メソッドの返す整数が Bignum の範囲になってしまうと SEGV が発生することがある不具合の修正がありました。
これ本来は hash の整数が範囲を超えても大丈夫になればいいんですけど、それが影響範囲が大きくて難しい(?)ため hash メソッドの実装で Fixnum の範囲に収まるように各個撃破しないといけないというので、新規に追加されたクラスの実装とかで壊れてたのを修正しています。

nobu: r67466 2019-04-08 12:26:27 +0900

Enumerator::ArithmeticSequence#hash の戻り値の変換を LONG2FIX() でやってたのを SF2FIX() を使うように修正。 mswin などの LLP64 環境で hash の値が Fixnum の範囲を超えてしまって SEGV を誘発することがある不具合の修正です。 [ruby-core:92190] [Bug #15755]

nobu: r67467 2019-04-08 12:26:28 +0900

同様に Method#hash メソッドでも戻り値が Fixnum の範囲に収まってなかったので ST2FIX() を使うように修正しています。 [ruby-core:92191] [Bug #15756]

nobu: r67468 2019-04-08 12:26:29 +0900

Range#hash の実装でも同様に hash の値が Fixnum に収まるように修正しています。 [ruby-core:92194] [Bug #15757]

svn: r67469 2019-04-08 12:26:29 +0900

version.h の日付更新。

nobu: r67470 2019-04-08 14:06:43 +0900

同様に Struct#hash の実装でも結果が Fixnum に収まるように ST2FIX() を使うように修正しています。メールも検索しましたがこれだけはチケットにはなってないようですね。