ruby-trunk-changes r54951 - r54964

今日は関数の attribute の pure や const をつけたり、メモリ確保のエラーチェック漏れなどの修正がありました。

kazu: r54951 2016-05-08 23:36:18 +0900

r54950 の ChangeLog エントリの typo 修正。

naruse: r54952 2016-05-09 02:44:51 +0900

configure で gcc 拡張の const と pure 属性をつけるマクロ CONSTFUNC() と PUREFUNC() を定義するようにして、-Wsuggest-attribute で判定された関数につけているようです。しかし -Wsuggest-attribute=pure などのオプション自体は追加していません。 longjmp() の呼び出しを考慮していないなど false-positive な検出が多いみたいです。

svn: r54953 2016-05-09 02:44:52 +0900

version.h の日付更新。

naruse: r54954 2016-05-09 02:52:38 +0900

gc.c の rb_gc_unprotect_logging() と gc_prof_setup_new_record() で malloc() および realloc() の戻り値の NULL チェックがされていなかった箇所を修正しています。また regparse.c の parse_regexp() でエラー時のメモリ解放漏れを修正しています。また util.c で MALLOC/FREE というマクロを malloc/free でなくチェック込みの xmalloc/xfree に展開するように修正しています。使ってるところでチェックしてないからですね。

usa: r54955 2016-05-09 06:31:23 +0900

r54952 で CONSTFUNC() と PUREFUNC() が定義されない環境でビルドが失敗するようになっていたので include/ruby/ruby.h で未定義だったら定義するようにしています。

usa: r54956 2016-05-09 07:20:05 +0900

r54955 の再修正。 include/ruby/ruby.h ではなく include/ruby/defines.h で関数の attributes に関するマクロを定義するように移動しています。 oniguruma.h でもマクロが利用されていたため。

nobu: r54957 2016-05-09 09:05:30 +0900

r54939 で追加された webrickSSL server のテスト test/webrick/test_ssl_server.rb をリファクタリングして専用の assertion メソッド assert_self_signed_cert を切り出しています。

nobu: r54958 2016-05-09 09:05:32 +0900

webrick のテストでプログレスバー? が出力されるので capture_io で捕捉して表示を抑制するようにしています。

nobu: r54959 2016-05-09 09:05:33 +0900

r54950 の拡張ライブラリ openssl で OPENSSL_NO_SSL2 および OPENSSL_NO_SSL3_METHOD のマクロの有無で検出した関数を除外するようにしましたが、そもそも have_func で関数を探す時にマクロをチェックして検出をやめるように修正しています。

nobu: r54960 2016-05-09 10:46:37 +0900

HAVE_WORKING_FORK が定義されていない時(fork() は単に HAVE_FORK ではなく configure で実際に動作するか確認して HAVE_WORKING_FORK というマクロが定義されるようになっているようです)に rb_thread_atfork() や rb_thread_atfork_before_exec() といった関数を空に定義するようにしています。またこれにより不要になる関数群の定義も #ifdef HAVE_WORKING_FORK の中に入れるようにしています。また不要になった thread_win32.c の gvl_atfork() も削除しています。

nobu: r54961 2016-05-09 10:52:01 +0900

さらに rb_thread_atfork_internal() や rb_thread_atfork() でそれぞれ GET_THREAD() を呼び出していたのをやめて引数に rb_thread_t を受け取るようにしています。

nobu: r54962 2016-05-09 12:52:09 +0900

random.c の rand_init() に渡される引数 seed は常に Integer を渡すようにして、rb_to_int() の変換削除し、呼び元の random_init() や rb_f_srand() で必要に応じて rb_to_int() で変換しておくようにしています。

nobu: r54963 2016-05-09 13:27:12 +0900

random.c の init_by_array() の配列の引数に const 修飾子を追加しています。

kazu: r54964 2016-05-09 23:30:00 +0900

r54952 の ChangeLog エントリの typo 修正。