ruby-trunk-changes r55432 - r55444

今日は拡張ライブラリ stringio の不具合修正、rubygems の更新などがありました。

nobu: r55432 2016-06-18 08:52:48 +0900

拡張ライブラリ stringio の StringIO#gets や readlines で int のオーバフローした時に不正ポインタアクセスする可能性があった不具合を修正しています。

svn: r55433 2016-06-18 08:52:49 +0900

version.h の日付更新。

nobu: r55434 2016-06-18 10:13:39 +0900

拡張ライブラリのビルド時にエンコーディングのオブジェクトファイルの指定を ENCOBJS ではなく EXTENCS を使うようにして、静的に link するエンコーディングのぶんを除外するようにしています。 また静的に link するエンコーディングは libenc というライブラリを作るようにしています。 configure に --with-static-linked-ext を指定してビルドした時のビルドエラーが起きていたようです。 [ruby-core:75618] [Bug #12401]

nobu: r55435 2016-06-18 10:50:46 +0900

vm_eval.c の rb_yield_splat(), eval_string_with_cref() の変数につけていた volatile が不要として外しています。 "clobbered by longjmp ..." の警告避けで付けたものっぽいですが不要な場所だったようです。

nobu: r55436 2016-06-18 10:50:49 +0900

コンパイラの未初期化変数の警告の誤検出を抑制するために VAR_NOCLOBBERED() というマクロを追加して特定の GCC のバージョンでのみ volatile を付けるようにしています。また rb_eval_cmd() で TH_PUSH_TAG() の外で分岐して2箇所に TH_PUSH_TAG() があったのを、最初に TH_PUSH_TAG() してからその中で分岐するように重複した処理をまとめるようにリファクタリングしています。

nobu: r55437 2016-06-18 11:25:27 +0900

vsnprintf.c で PRI_EXTRA_MARK_LEN というマクロを定義していたのを、変数として定義するようにしています。ついでに文字列リテラルのサイズを rb_strlen_lit() を使って得るようにしています。

nobu: r55438 2016-06-18 11:25:28 +0900

拡張ライブラリ bigdecimal で FIX2INT() で変換していたところを NUM2INT() を使うようにしています。また unsigned short に変換する時に FIX2UINT() を使ってから (unsigned short) にキャストしていたのを NUM2USHORT() を使うように修正しています。

nobu: r55439 2016-06-18 13:40:15 +0900

r55432 の stringio の heap overflow のテストでバッファに使う文字列のポインタが最上位bitが立っているものになるまで何度か繰り返して 1000 回やってもできなかったらあきらめて skip するようにしています。

nobu: r55440 2016-06-18 13:50:14 +0900

r55432 のテストの再修正。 ポインタ(void *)のサイズが long のサイズより大きかったら skip するようにしています。

hsbt: r55441 2016-06-18 14:11:55 +0900

rubygems を最新版に更新しています。 Molinillo という依存関係解決エンジンを 0.5.0 に更新しているそうです。 https://github.com/rubygems/rubygems/pull/1638

svn: r55442 2016-06-18 14:11:57 +0900

r55441 で新規追加されたファイルの svn property 設定。

hsbt: r55443 2016-06-18 14:11:57 +0900

r55441 でマージした rubygems の変更で拡張ライブラリのインストールのテストが失敗していたのを修正しています。 https://github.com/rubygems/rubygems/pull/1645

rhe: r55444 2016-06-18 18:10:19 +0900

Ubuntu 16.04 の OpenSSL の不具合でテストがこけることがあるので OpenSSL::PKeyEC#generate_key を Oakley- ではじまる名前の curves について呼ばないようにしています。 [ruby-dev:49670] [Bug #12504]