ruby-trunk-changes r41924 - r41932

今日は Hash の実装のちょっとした最適化や昨日のマルチバイト NUL 文字対応の不具合修正などがありました。

glass:r41924 2013-07-12 00:06:18 +0900

hash.c の Hash#keys の実装で結果を格納するための配列をあらかじめ予想される capacity を確保して作成するようにする最適化。

svn:r41925 2013-07-12 00:06:27 +0900

version.h の日付更新。

glass:r41926 2013-07-12 00:09:56 +0900

hash.c の Hash#values でも同様に結果の配列を Hash の要素数ぶんの capacity を確保して生成するようにしています。

glass:r41927 2013-07-12 00:25:31 +0900

hash.c の Hash#size の実装で RHASH_SIZE() を使うようにしています。

glass:r41928 2013-07-12 11:22:01 +0900

hash.c の recursive_hash() で Hash の要素数を調べるのに RHASH_SIZE() マクロを利用するようにしています。

glass:r41929 2013-07-12 11:35:16 +0900

hash.c の Hash#reject! の実装でも Hash の要素数を取得するために RHASH_SIZE() を利用するようにしています。これにより struct RHash::ntbl が NULL ではないけど空という場合も rb_hash_foreach() を呼び出さずにすませるようにしています。

nobu:r41930 2013-07-12 16:28:40 +0900

おそらく r41918 から r41921 のエンコーディングによって NUL 文字がマルチバイトでないといけない時の考慮をした変更で、NUL 文字終端させる時にバッファオーバランする可能性があった不具合が入ってしまったのを修正しています。 [ruby-dev:47500] [Bug #8624]

nobu:r41931 2013-07-12 16:37:31 +0900

signal.c で sigaction でシグナルハンドラを登録するところが valgrind で未定義領域の参照エラーとして検出されてしまっていたみたいで、VALGRIND_MAKE_MEM_DEFINED() を使って明示的に定義済みにすることで抑制するようにしています。

usa:r41932 2013-07-12 18:11:25 +0900

r41922 と同様に ext/fiddle/win32/lib/win32/registry.rb からも WCHAR_NUL を追加するようにした workaround を削除しています。