ruby-trunk-changes r55423 - r55429

今日は OpenSSL::OCSP::Request#verify などの不具合修正、String#tr の不具合修正、初期化時の Object クラスの GC 保護が不完全だった不具合修正などがありました。

rhe: r55423 2016-06-16 00:02:46 +0900

拡張ライブラリ openssl の OpenSSL::OCSP::Request#verify と OpenSSL::OCSP::BasicResponse#verify で OCSP_request_verify() および OCSP_basic_verify() のエラーチェックが間違っていたのを修正し、またエラー時に ossl_clear_error() を呼び出して OpenSSL 内部の error queue をクリアするようにしています。あとこれまではエラー内容を rb_warn() で警告に出していたのをやめています。エラー内容は取れなくてもいいのかな…。

svn: r55424 2016-06-16 00:02:47 +0900

version.h の日付更新。

nobu: r55427 2016-06-16 11:15:27 +0900

String#tr, #tr! で生成する文字列のメモリ確保時に NUL 文字終端を考慮していなくて1文字ぶんバッファオーバフローしていたのを修正しています。

nobu: r55428 2016-06-16 12:17:54 +0900

r55427 の追加修正。 tr_trans() で処理中に文字列のバッファを伸張させる時に倍々で増やしていってたのを必要なサイズだけ伸ばす or 追加で必要なサイズを 1.2 倍したぶんだけ追加するようにしています。

nobu: r55429 2016-06-16 16:35:37 +0900

Object クラスの VALUE の値 rb_cObject を Init_class_hierarchy での bootstrap 時に rb_gc_register_mark_object() で GC の root に登録するようにしています。 環境変数RUBY_DEBUG=gc_stress を指定して GC.stress の状態で起動すると Object クラスが回収されてしまって SEGV するという不具合があったようです。おおう…。 [ruby-dev:49666] [Bug #12492]