ruby-trunk-changes r66831 - r66836

今日は Hash の生成時にメモリ確保するサイズの計算ミスで SEGV する可能性があった不具合修正などがありました。

nobu: r66831 2019-01-15 22:52:38 +0900

Array#- と Array#difference の rdoc 用コメントで引数の配列の要素と一致する要素が元の Array に複数あった時に全て削除されるというのを明確化しています。 https://github.com/ruby/ruby/pull/2068

mame: r66832 2019-01-15 23:19:19 +0900

Hash#[] や Hash リテラルの生成時に呼ばれる rb_hash_bulk_insert_into_st_table() でバッファサイズを計算するのに st_table::num_entries を使ってたのを st_table::entries_bound に修正しています。 num_entries は有効な(生きてる)要素数で、entries_bound は DELETE フラグがついてるけどまだ残ってる要素も含んでいるなど、必要なバッファサイズを計算するには entries_bound を使わないといけなかったとのこと。チケットでは Hash リテラル内に **{...} で Hash オブジェクトを展開したものを入れるとたまに SEGV が起きるという現象だった模様。 [ruby-core:91095] [Bug #15536]

nobu: r66833 2019-01-16 09:48:42 +0900

configure.ac で cflags を更新するのに warnflags があれば追加しようとしていたところで "test -z" で変数に値がセットされてるかチェックするところで $warnflags でなく warnflags と変数名だけ書かれてたので常に追加されてたのを修正しています。 r25285 (2009-10-10) というずっと昔からこうだったようです。実害あるのかな。

svn: r66834 2019-01-16 09:48:46 +0900

version.h の日付更新。

nobu: r66835 2019-01-16 10:35:28 +0900

r65800 の Makefile.in の make reconfig 時に warnflags を明示的に再設定してたのを revert しています。 その直後の r65803 と r65805 で不要になってたとのことで、これらは .travis.yml と configure.ac なので CI のテストでの問題の対策で入れたものだったみたいです。

nobu: r66836 2019-01-16 11:09:48 +0900

configure.ac で rb_cv_warnflags 変数の前後の空白を削るようにしています。