ruby-trunk-changes r35159 - r35174

今日は openssl の不具合修正、st_update() の機能追加に伴うコールバック関数のインタフェース変更などがありました。

emboss:r35159 2012-03-29 07:53:18 +0900

OpenSSL::ASN1::Boolean や OpenSSL::ASN1::Integer 等のプリミティブ型を表わすクラスに nil を渡して作成したオブジェクトの to_der メソッドを呼ぶと SEGV などしてしまう不具合を修正しています。nil をチェックして TypeError を発生させるようにしています。 [ruby-core:43009] [Bug #6102]

svn:r35160 2012-03-29 07:53:22 +0900

version.h の日付更新。

emboss:r35161 2012-03-29 08:28:17 +0900

NEWS ファイルに OpenSSL::ASN1 の下のクラスに nil を渡して生成したインスタンスに to_der を呼んだ時の挙動について追記しています。

emboss:r35162 2012-03-29 09:32:09 +0900

openssl の OpenSSL::X509 の証明書チェックのテストが OpenSSL 1.0.1 より古いバージョンを使っていると失敗するのでテストを省略するようにしています。 [ruby-core:42949] [Bug #6089]

usa:r35163 2012-03-29 10:15:37 +0900

タイマースレッドから割り込まれた時に実行を明け渡す時間単位を 250 msec から TIME_QUANTUM_USEC に変更しています(100 msec。ただしこの次で Windows 版では 10msec に変更されています)。CPU を使い切っているThreadが存在するとThreadの切り替えが遅いというのを修正しています。 [ruby-dev:45294] [Bug #6098]

usa:r35164 2012-03-29 10:17:39 +0900

Windows 版での TIME_QUANTUM_USEC を 10msec に変更しています。 [ruby-dev:45294] [Bug #6098]

emboss:r35167 2012-03-29 10:27:17 +0900

OpenSSL::PKCS7.new に不正な内容を渡した時に、T_DATA 型のオブジェクトに包む構造体に不正な値を残してしまっていたために後で SEGV などしてしまっていたのを修正。エラー時には後始末をして、構造体のポインタをクリアするようにしています。 [ruby-core:43250] [Bug #6134]

nobu:r35169 2012-03-29 16:35:38 +0900

Test::Unit::Runner#job_status 等をリファクタリングしてメソッドを切り出しています。

nobu:r35170 2012-03-29 16:36:12 +0900

内部で利用しているハッシュテーブルの更新関数 st_update() に渡すコールバック関数のインタフェースに、追加しようとしているキーに対応する値が既に存在しているかどうかを判別する引数を追加して、キーが見付からなかった時もコールバック関数は呼ぶようにしています。つまり st_update() で新規追加できるようにしているようです。

nobu:r35171 2012-03-29 16:38:14 +0900

lib/rdoc/task.rb で定数 RDocTask の再定義の警告が出るのを防ぐため remove_const で消すようにしています。

nobu:r35172 2012-03-29 23:50:20 +0900

st_update() のコールバック関数のインタフェースにさらに修正して key をポインタで渡すようにしています。これにより新規追加する場合(元々テーブル内にキーが存在しなかった場合)コールバック関数で挿入する要素のキーを別のものを指定できるようになります。

nobu:r35173 2012-03-30 00:03:05 +0900

Thread のテストで利用している test/ruby/lbtest.rb というスクリプト内でメッセージを表示するのに puts を利用しているところをメッセージ内に改行を含めるようにして print で表示するように変更しています。おそらく puts だとメッセージ本体と改行コードで2度出力処理するので、複数スレッドで同時に実行すると混ざることがあるのでまとめて出力するようにしているのだと思います。

svn:r35174 2012-03-30 00:03:08 +0900

version.h の日付更新。