ruby-trunk-changes r33361 - r33364

今日はファイナライザの処理がネストしないようにする変更と、Array#join のエンコーディングについての不具合修正がありました。

nobu:r33361 2011-09-30 01:54:14 +0900

ファイナライザが実行中にさらにファイナライザ実行に再入する可能性があったのを、ファイナライズ中のフラグを管理して再入しないようにしています。 [ruby-dev:44562]

svn:r33362 2011-09-30 01:54:19 +0900

version.h の日付更新。

nobu:r33363 2011-09-30 03:18:03 +0900

Array#join の結果の文字列のエンコーディングは連結される文字列同士のエンコーディングと内容の関係で決まりますが、通常最初の文字列の要素のエンコーディングに依存しますが、最初の要素が文字列じゃなくて、文字列オブジェクトの後に文字列じゃないオブジェクトが続くという時に(テスト参照)、後のオブジェクトを文字列に変換したもののエンコーディングがコピーされてしまうという不具合の対処です。 [ruby-core:39776] [Bug #5379]
なのですがここで追加されているテストでは文字列のエンコーディングUTF-8 なのですが、含まれている文字が ASCII の範囲のものなので連結結果も US-ASCII になってしまうようです。

naruse:r33364 2011-09-30 09:18:18 +0900

というわけで r33363 のテストで連結する文字列は UTF-8 でないと表現できないように "\u3042" (ひらがなの「あ」ですね)にしています。