ruby-trunk-changes r43022 - r43036

今日はダミーエンコーディング UTF-16/UTF-32 を String#encode で使った時の不具合修正と win32/registry.rb の不具合修正がありました。

akr:r43022 2013-09-23 21:52:49 +0900

r43009 で追記した IO.select の rdoc 用コメントで文字列の一部だけ書き込めた時のことを考慮するようにコード例を修正しています。

nobu:r43023 2013-09-23 22:16:11 +0900

BOM つきの文字列に対応するバイトオーダーの指定のないダミーエンコーディング UTF-16, UTD-32 をダミーエンコーディングとしてではなく UTF-16BE/UTF-32BE などビックエンディアンエンコーディングを複製して作るようにしています。 UTF-16/UTF-32 を指定して String#encode すると SEGV するという不具合の修正としていますが LE の時もこれでいいんでしょうか。 [ruby-core:57318] [Bug #8940]

nobu:r43024 2013-09-24 00:02:50 +0900

r43023 の変更に String#encode した文字列のバイト数でなく文字数をカウントするテストケースを追加しています。 [ruby-core:57318] [Bug #8940]

svn:r43025 2013-09-24 00:03:05 +0900

version.h の日付更新。

nobu:r43026 2013-09-24 12:51:14 +0900

拡張ライブラリ win32 に添付されている win32/registry.rb の修正。 WIN32::Registry::API に Constants の include を追加、また Win32::Registry::API#EnumValue で文字列の切り出しサイズの間違いを修正しています。

charliesome:r43027 2013-09-24 14:02:13 +0900

r42822 でクラス継承関係を意識したメソッドキャッシュクリアの変更でベンチマークが少し遅くなったため、クラス毎のメソッドキャッシュテーブルを削除してグローバルなキャッシュに戻しています。キャッシュの有効性のチェックに連番を使うしくみを変更したところは残っていますが、hierarchical method cache invalidation は revert されたということでしょうか? [ruby-core:57289] [Bug #8930]

charliesome:r43028 2013-09-24 14:09:57 +0900

r43027 の変更に追加して不要になった関数、構造体、変数などを削除しています。 [ruby-core:57289] [Bug #8930]

nobu:r43029 2013-09-24 16:35:12 +0900

拡張ライブラリ win32 に添付されている win32/registry.rb の Win32::Registry::API#EnumKey でも文字列の切り出しサイズの計算の間違いを修正しています。

nobu:r43030 2013-09-24 16:39:41 +0900

拡張ライブラリ win32 に添付されている win32/registry.rb の Win32::Registry::API#EnumKey, Win32::Registry::API#EnumValue と Win32::Registry#each_value, Win32::Registry#each_key で返す文字列を default_internal に encode するようにしています。

nobu:r43031 2013-09-24 16:41:17 +0900

拡張ライブラリ win32 の win32/registry.rb の Win32::Registry#write でサイズを文字数でなくバイト数でセットするようにしています。また文字列を NUL 文字で終端させるようにしています。

nobu:r43032 2013-09-24 16:42:58 +0900

r43023 で UTF-16UTF-32 がダミーエンコーディングでなくなったため、文字列の省略表記の関数のテスト用の拡張ライブラリでエンコーディングのうち UTF-16UTF-32 を除外するのに Encoding#dummy? が使えなくなったので個別に除外するように条件を追加しています。

nobu:r43033 2013-09-24 16:48:51 +0900

CSV のテスト test/csv/test_encodings.rb でも r43032 と同様に UTF-16UTF-32 を除外するために条件を追加しています。

nobu:r43034 2013-09-24 17:15:18 +0900

UTF-16UTF-32 の BOM 付き文字列用のエンコーディングが r43023 でダミーエンコーディングでなくなったのが影響が大きかったからだと思いますがダミーエンコーディングフラグを立てる API を追加して、通常のエンコーディングをコピーしつつダミーのフラグを立てたエンコーディングを作れるようにしています。そして r43032 と r43033 のテストの対応を revert しています。

nobu:r43035 2013-09-24 17:39:01 +0900

String#inspect でエンコーディングUTF-16/UTF-32 の時にサイズのチェックが不足していて不正メモリアクセスする可能性があった不具合を修正しています。また文字列に BOM が付加されていなかった場合 ASCII-8BIT として表示するようにしています。

kazu:r43036 2013-09-24 18:40:31 +0900

r42971 の ChangeLog エントリのインデント修正。