ruby-trunk-changes r52482 - r52496

今日は File::TMPFILE という open のフラグ用定数の追加や潜在的 SEGV の修正(?) などがありました。

nobu: r52482 2015-11-08 03:48:33 +0900

r52479 で string.c から id.h を #include するようにしたのにあわせて common.mk の依存関係にも追加しています。

ko1: r52483 2015-11-08 08:10:55 +0900

TracePoint の event hook のリストを無効にした時に要素を後で消すべきかどうかの rb_hook_list::need_clean をカウンタとして使っていたのを TRUE/FALSE をセットして真偽値としてチェックするようにしています。
また exec_hooks_precheck() でイベントの処理対象がなくても list を clean する必要があるかどうかのチェックは行なうように順番を入れ換えています。

hsbt: r52484 2015-11-08 10:38:06 +0900

標準添付ライブラリ net/ftp の rdoc 用コメントでサンプルのファイルパスと type パラメータの typo を修正しています。 https://github.com/ruby/ruby/pull/1084

nobu: r52485 2015-11-08 10:55:14 +0900

IO#gets の rdoc 用コメントにて gets(1) とサイズを指定して読み込んだ場合、その byte 数から IO の encoding での1文字のサイズに切り上げたところまで読み込まれることを追記しています。 https://github.com/ruby/ruby/pull/1085
おー、しかし例はファイルに書いているものが StringIO と書かれているところがありますね。

nobu: r52486 2015-11-08 11:08:57 +0900

と思ったら r52485 の StringIO は IO と修正されていました。 https://github.com/ruby/ruby/pull/1085

hsbt: r52487 2015-11-08 14:01:33 +0900

拡張ライブラリ psych で Ruby 2.0 との互換性のために RARRAY_CONST_PTR() と RARRAY_AREF() というマクロが未定義の時に自前で定義するようにしています。

nobu: r52488 2015-11-08 14:06:22 +0900

拡張ライブラリ gdbm のテストで teardown での後始末で fuser(1) で情報を出力しようとしているところで @chdir ではなく @tmpdir の情報を出力するように修正しています。

nobu: r52489 2015-11-08 14:08:03 +0900

IO#gets の rdoc 用コメントの呼び出し例に引数にサイズを指定した時の例を追加しています。

nobu: r52490 2015-11-08 14:24:45 +0900

method entry のflags のセットを行なう inline関数 METHOD_ENTRY_VISI_SET(), METHOD_ENTRY_BASIC_SET(), METHOD_ENTRY_FLAGS_SET() で警告除去のためかっこを追加しています。 https://github.com/ruby/ruby/pull/1082

nobu: r52491 2015-11-08 14:54:29 +0900

拡張ライブラリ date と openssl でも条件部に代入があるところで警告除去のためのかっこと、NULL や '\0' との明示的な比較を追加しています。

glass: r52492 2015-11-08 15:26:44 +0900

定数 O_TMPFILE のを FileConstant::TMPFILE として定義するようにしています。 Linux で使える一時ファイル生成用のフラグですね。

nobu: r52493 2015-11-08 15:29:13 +0900

拡張ライブラリ bigdecimal の乗算や除算で用いる AddExponent() で SIGNED_VALUE の変数をそのまま比較していたところでオーバフローの警告除去のため引き算してから 0 と比較するように修正しています。
うーん? 普通に考えるとそのまま比較するほうが安全で引き算するとむしろオーバフローの危険があるような気がするのですが。

glass: r52494 2015-11-08 16:27:25 +0900

r52492 で追加した FileConstants::TMPFILE(File::TMPFILE としてもアクセスできます)について NEWS ファイルに追記しています。

nobu: r52495 2015-11-08 16:46:39 +0900

symbol.c に rb_cstr_intern() という関数を追加して、C の文字列から fake string (ObjectSpace からは確保せずその場で struct RString に文字列オブジェクトを偽装する構造を作る)を作ってそれを引数に rb_str_intern() を呼んで Symbol を返すようにしています。
しかし今のところ利用はしていないみたいですね。

nobu: r52496 2015-11-08 17:32:51 +0900

ブロックつきの Hash.new {} でデフォルト値を指定するようにした場合に、Hash#default で引数なしでデフォルト値を参照しようとした場合に、引数がなくても argv を参照してしまっていたので引数の数が1の場合に限って参照するように修正しています。
小さな例では発生しませんけどこれ場合によっては SEGV する可能性があるということですかね。だとすると backport 対象になりますね。