ruby-trunk-changes r59762 - r59767

今日は LLP64環境(mingw/mswin) での hash メソッドでの hash 値の操作で SEGV することがある不具合の修正や String#force_encoding した文字列の Encoding の操作で誤判定が起きることがある不具合の修正などがありました。

nobu: r59762 2017-09-06 21:50:10 +0900

String#each_grapheme_cluster などで Unicode 系ではない Encoding の時に each_char などの実装を利用するようにしていたのですが、Unicode でも single byte 文字のみ含んでいる時には each_char の実装を利用するようにしています。

nobu: r59763 2017-09-06 22:11:44 +0900

String#scrub などの実装で、実際に文字列に含まれる codepoint の範囲をチェックした coderange もチェックしていますが、String#encode で本来の Encoding とは異なる Encoding とみなして不正文字チェックしようとした時に coderange のキャッシュされた値を参照すると誤判定する可能性があるので無視するようにしています。 [ruby-core:82674] [Bug #13874]

kazu: r59764 2017-09-06 22:46:31 +0900

String#each_grapheme_cluster の rdoc 用コメントで each_char のメソッドを each_chars と typo していたのを修正しています。

nobu: r59765 2017-09-07 12:24:08 +0900

hash メソッドなどで計算する st_index の値を Fixnum に変換する時に INT2FIX() や LONG2FIX() を利用していたところを ST2FIX() マクロを利用するように変更しています。 mingw/mswin 環境(LLP64環境)で [BUG] で異常終了になることがあったようです。 [ruby-core:82687] [Bug #13877]

svn: r59766 2017-09-07 12:24:09 +0900

version.h の日付更新。

nobu: r59767 2017-09-07 17:25:13 +0900

make golf で goruby のビルドに失敗していたのでルールを修正しています。 [ruby-dev:50214] [Bug #13854]