ruby-trunk-changes r57116 - r57125

今日は Array のメソッドでいくつかブロック内で配列サイズを変更した時に SEGV する可能性のある不具合の修正や MatchedData の不具合修正などがありました。

nobu: r57116 2016-12-20 14:09:18 +0900

test/lib/test/unit.rb で --excludes-dir のヘルプメッセージに separator を追加しています。

svn: r57117 2016-12-20 14:09:18 +0900

version.h の日付更新。

rhe: r57118 2016-12-20 14:26:07 +0900

命令列の行番号を取得するのに rb_iseq_first_lineno() を呼ぶ前に iseq->body->line_info_table をチェックしていたところ削ってます。既にこのテーブルのチェックは不要になっていて昔の名残りで残ってたみたいです。また rb_iseq_first_lineno() を呼んでるところも iseq->body->location.first_lineno を直接参照するようにしています。

rhe: r57119 2016-12-20 14:26:08 +0900

Array#combination や Array#repeated_combination でブロックを呼び出すループの条件で事前に取得した RARRAY_LEN() のサイズをそのまま使ってたので、ブロック内でその配列のサイズを変更すると不正アクセスになる可能性があったので、ループの条件で毎回 RARRAY_LEN() マクロでサイズチェックするように修正しています。 [ruby-core:78738] [Bug #13052]

yuki: r57120 2016-12-20 15:53:17 +0900

bundled gem の did_you_mean のバージョンを 1.1.0 に更新しています。

rhe: r57121 2016-12-20 15:53:44 +0900

Array#select! や Array#reject! のブロックでその配列のサイズを小さくするとやはり不正メモリアクセスする可能性があったのを修正しています。 [ruby-core:78739] [Bug #13053]

rhe: r57122 2016-12-20 15:53:45 +0900

string.c の RESIZE_CAPA_TERM() で明示的なキャストを追加してオーバフロー対策しています。 r56157 の追加対応とのこと。

rhe: r57123 2016-12-20 16:32:23 +0900

MatchedData で regexpnil の状態でいくつかのメソッドがチェックなしにアクセスして SEGV するようになっていたのを修正しています。 [ruby-core:78741] [Bug #13054]

nobu: r57124 2016-12-20 17:25:02 +0900

ARGF.class.new で生成したインスタンスからの読み込みで each_line を利用した時に行番号が更新されない不具合を修正しています。そもそもこういう使いかたはありなのか。 [ruby-core:78728] [Bug #13051]

nobu: r57125 2016-12-20 17:25:03 +0900

r57124 と同様に ARGF.class.new で作ったインスタンスの rewind メソッドで行番号がリセットされていなかったのを修正しています。