ruby-trunk-changes r45864 - r45875

今日は Module#initialize_copy で元のデータが残る不具合の修正や WEBrick::HTTPServer で shutdown 時に通信途中でもすぐ停止するようにする変更などがありました。

nobu: r45864 2014-05-08 00:43:37 +0900

gc.c の free_method_entry_i(), free_const_entry_i(), mark_method_entry_i(), mark_const_method_i() などの struct RClass::m_tbl_wrapper や rb_classext_t::const_tbl などの st_table の mark/free 用の関数の引数の型を st_data_t 型にする変更や rgengc_unprotect_logging_exit_func_i() に第3引数がなかったので追加したりといった変更です。

svn: r45865 2014-05-08 00:43:44 +0900

version.h の日付更新。

akr: r45871 2014-05-08 08:21:10 +0900

r45863 の OpenSSL::SSL::SSLServer に渡すソケットを TCPSocket/TCPServer を渡すケースと Socket を渡すケースのテストメソッドを Module に分離して include の組み合わせで網羅するようにリファクタリングしています。

nobu: r45872 2014-05-08 10:17:07 +0900

標準添付ライブラリ webrickWEBrick::HTTPServer で停止しようとしても IO.select で IO が読み込み可能だとループを抜けないようになっていたのですぐに停止しないようになっていたのを、すぐに抜けるように変更しています。 また IO.select が Windows で Errno::ENOTSOCK 例外を発生させるのでそれを捕捉するようにしています。 https://github.com/ruby/ruby/pull/607

naruse: r45873 2014-05-08 10:57:05 +0900

File::Statfs のために struct statfs を検出するのに OpenBSD では "sys/param.h" を "sys/mount.h" より前に #include しないといけなかったので configure の sys/mount.h のヘッダ検出時に sys/param.h も #include するようにしています。 [ruby-dev:48167]

nobu: r45874 2014-05-08 14:34:31 +0900

Module#initialize_copy で Module/Class オブジェクトのインスタンス変数テーブル、定数テーブル、メソッドテーブルなどを最初にクリアするようにしています。 コピー元の Module/Class のテーブルが存在しない時にクリアしないようになっていたので、initialize_copy しても元のデータが残ってしまっていたそうです。 [ruby-dev:48182] [Bug #9813]

nobu: r45875 2014-05-08 14:45:00 +0900

Object#initialize_copy の実装 init_copy に T_CLASS, T_MODULE 用のテーブルコピーする処理があったのですが、既に rb_mod_init_copy() が使われるようになっていて不要になっていたので削除しています。