ruby-trunk-changes r47033 - r47046

今日は BasicObject に Refinements を利用して追加したメソッドが SEGV する不具合の修正や Symbol の不要な pindown 回避の変更などがありました。

suke: r47033 2014-08-02 23:55:36 +0900

拡張ライブラリ win32ole のソースファイルを分割して WIN32OLE::VARIANT の実装部分を win32ole_variant_m.(h,c) に分離しています。

svn: r47034 2014-08-02 23:55:50 +0900

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

nobu: r47037 2014-08-03 10:43:10 +0900

BasicObject を Module#refine に渡してメソッドを拡張した場合、そのメソッドを呼ぶと SEGV が発生してしまう不具合を修正しています。 class の super が存在しない場合を考慮していなかったみたいです。 [ruby-core:64166] [Bug #10106]

svn: r47038 2014-08-03 10:43:15 +0900

version.h の日付更新。

nobu: r47039 2014-08-03 10:54:38 +0900

README.EXT.ja で句読点「、。」のかわりにカンマとピリオド「,.」を利用するようにしています。独特のスタイルですね。

nobu: r47040 2014-08-03 10:55:10 +0900

rb_to_symbol()、rb_check_symbol()、rb_check_symbol_cstr() などの Symbol を得る関数を公開関数にしています。

nobu: r47041 2014-08-03 10:55:32 +0900

transcode.c の econv_opts() で ArgumentError のメッセージを作成するために Symbol を文字列化するのに rb_id2name(SYM2ID(v)) を使っていたのを rb_sym2str() を使うことで pindown を避けると同時にエンコーディングも保持したままメッセージに埋め込むようにしています。

nobu: r47042 2014-08-03 10:56:01 +0900

拡張ライブラリ date, openssl, tk, win32ole でオブジェクトの型の判定に TYPE() を使っていたところを RB_TYPE_P() を使うように置き換えています。こちらのほうがコンパイラによる最適化がきいて高速になるかもしれない、のだったと思います。

nobu: r47043 2014-08-03 10:56:16 +0900

拡張ライブラリ objspace、openssl、strscan、tk で Symbol の文字列化のために rb_id2name(SYM2ID()) を使っていたところも同様に rb_sym2str() を使って String オブジェクトに変換することで不要な pindown を避けて、エンコーディングを保持したまま処理するように(メッセージ等に埋め込む場合)しています。

nobu: r47044 2014-08-03 10:56:31 +0900

拡張ライブラリ strscan の StringScanner#aref での IndexError 例外メッセージの作成時に文字列のエンコーディングを保持したままメッセージに埋め込むようにしています。

kazu: r47045 2014-08-03 17:20:47 +0900

r47027 と r47030 の ChangeLog エントリの typo 修正。

nobu: r47046 2014-08-03 22:33:06 +0900

lib/rubygems/util.rb で rescue 節で例外を代入する変数を指定していたのに利用していなかったので警告除去のため変数の指定を削除しています。