ruby-trunk-changes r44882 - r44890

今日は標準添付ライブラリ resolv の修正やソートの実装に qsort_r(3) を利用するようにする変更などがありました。

nobu: r44882 2014-02-08 01:20:55 +0900

rubyコマンドラインの引数 argv のオプション処理時に argc のチェックなしにアクセスしているところがあって配列の末尾を越えた領域にアクセスする可能性があったのを修正しています。まあ多くても1つオーバランするだけみたいなので argv の最後に番兵として NULL が埋め込まれてたら SEGV することはなさそうですが。

akr: r44883 2014-02-08 15:11:47 +0900

io.c で未使用になっていた SMALLBUF という定数マクロを削除しています。

akr: r44884 2014-02-08 15:29:54 +0900

標準添付ライブラリ resolv の Resolv::DNS::Message::MessageDecoder で受け取ったメッセージが途中で途切れてた時に DecodeError 例外を発生させるようにしています。 [ruby-core:60557] [Bug #9498]

akr: r44885 2014-02-08 15:42:28 +0900

標準添付ライブラリ resolv で Socket に明示的に CLOEXEC フラグをセットしているのをやめています。 Ruby はデフォルトで開いた file descriptor 全てに CLOEXEC フラグをつけようとするので不要になっていました。

ko1: r44886 2014-02-08 16:03:43 +0900

オブジェクトがマークされているかどうかを判定する rb_objspace_marked_object_p() という API を追加しています。 内容はシンプルですがコメントによると mark フェーズの直後でないと正しく判定できず sweep が行なわれていると判定できなくなるそうです。追加されただけでとりあえず使ってはいないようです。 gc.h に宣言が追加されているから外部の拡張ライブラリからは使えないでしょうし、objspace 用かなぁ。

akr: r44887 2014-02-08 16:35:24 +0900

標準添付ライブラリ resolv の Resolv::DNS::Message::MessageDecoder#get_labels で return する前に @index を復帰させて複数回呼び出し可能なようにしている、のではないかと思います。

nobu: r44888 2014-02-08 18:20:33 +0900

vm_insnhelper.c のインデント修正のみ。

glass: r44889 2014-02-08 21:50:28 +0900

configure で qsort_r(3) の存在チェックをして ruby_qsort() の実装に利用するようにしています。ただし GNU バージョンの qsort_r() と BSD バージョンの qsort_r() は型が違うらしいのでそれもチェックして GNU バージョンを使うようにしています。

nobu: r44890 2014-02-08 23:40:36 +0900

r44538 での SSE2 を利用するようにするための configure の追加が不完全で SSE2 検出に失敗していたのを修正しています。 [ruby-core:60576] [Bug #8358]