ruby-trunk-changes r29798 - r29806

今日は Coverity Scan 無双でした。

mame:r29798 2010-11-15 22:48:37 +0900

rb_funcall で va_init_list と va_end がちきんと対応していなかったのを修正。va_end だけ if 節の中に入っていたので va_init_list を呼んで va_end を呼ばない可能性がありました。
ちなみに "Coverity Scan found this bug" だそうです。 Coverity Scan というのはこれですね。 http://scan.coverity.com/ ソースコードの静的解析の製品を販売している会社のサービス(?)です。詳しくは mame さんのブロクへ coverity やばい - まめめも

mame:r29799 2010-11-15 23:44:19 +0900

rb_iseq_t のメンバ local_table は ID の配列なのに、メモリ確保する時の ALLOC_N に渡している型が ID * になっていた。ID はポインタと同じサイズなので発覚していなくて、これも Coverity Scan で発見されたとのこと。

mame:r29800 2010-11-15 23:57:18 +0900

CHECK_STACK_OVERFLOW でポインタ演算の時に型キャストが不足していて sizeof(rb_control_frame_t) を加算する時に VALUE* へ加算しているので意図せず多めに加算してしまっていた。これも Coverity Scan によって発見されたとのこと。

mame:r29801 2010-11-16 00:09:40 +0900

assign_heap_slot にて、xmalloc の返り値を NULL チェックする前に使用したり、エラー時に解放忘れしていたりしたのを修正。これも Coverity Scan により発見。

svn:r29802 2010-11-16 00:09:41 +0900

version.h の日付更新。

mame:r29803 2010-11-16 01:06:35 +0900

正規表現で文字クラス([] で囲むやつ)の中の || && で連結する表記をパースするとメモリリークしていたのを修正。 Coverity Scan 無双です。 [ruby-dev:42579]

nobu:r29804 2010-11-16 06:39:39 +0900

String#unpack でフォーマット文字列?(指示文字列でしたっけ)が要求するだけのサイズがない文字列だったときはその部分の結果は nil になりますが、ブロック付きの呼び出しの時に SEGV していたのを修正。[ruby-core:33193] [Bug #4059]

mrkn:r29805 2010-11-16 09:37:31 +0900

ext/bigdecimal/lib/bigdecimal/util.rb で未使用のローカル変数の警告除去。

naruse:r29806 2010-11-16 15:20:06 +0900

昨日の r29790 の test_process.rb の再修正。Process.wait 後に sleep が挟まれ、待ち時間を短くしています。