ruby-trunk-changes r46991 - r46998

今日は Marshal.load, dump での Symbol の扱いの修正などがありました。

nobu: r46991 2014-07-29 05:36:50 +0900

Marshal.load で Symbol を load する時に sym2encidx() の引数に r_symbol() と r_object() を直接書いていたのを、先に r_symbol() を呼んで結果を変数に代入するようにしています。 r_symbol() と r_object() は Marshal.load の読み込み元からの入力を読む副作用のある関数なので、呼ばれる順番に意味がありますが、関数の引数は評価順が定まっていないので、明示的に r_symbol() を先に呼ばれるようにしています。

svn: r46992 2014-07-29 05:36:56 +0900

version.h の日付更新。

nobu: r46993 2014-07-29 12:28:43 +0900

Marshal.dump の Symbol の書き出しで、同じ Symbol を複数回書き出した時にちゃんと共有されていなかったのを修正しているみたいです。 String 化したものを書き出していたので元の Symbol のまま書き出すようにすることで参照を共有できる時は二重に Symbol の名前を書き出さないようにしています。おそらく load 時の結果には影響しないと思われますが(同じ名前で load したら Symbol は同じになると思うので)。

nobu: r46994 2014-07-29 16:41:35 +0900

emacs 用のスクリプト misc/ruby-additional.el の ruby-encode-unicode の修正。

nobu: r46995 2014-07-29 16:41:42 +0900

misc/ruby-additional.el の ruby-encode-unicode のキーバインディングの変更。 uncomment-region とかぶっていたので変更したそうです。

nobu: r46996 2014-07-29 17:22:33 +0900

compile.c の compile_data_alloc() で gcc-4.2 での警告抑制のため明示的なキャストを追加しています。

suke: r46997 2014-07-29 19:48:57 +0900

拡張ライブラリ win32ole の folerecord_method_missing() から内部的なインスタンス変数 fields (先頭が "@" でないので ruby スクリプトからは不可視)の操作部分を olerecord_ivar_get()、olerecord_ivar_set() として切り出すリファクタリング

suke: r46998 2014-07-29 22:25:02 +0900

拡張ライブラリ win32ole で WIN32OLE_RECORD から WIN32OLE_VARIANT への変換時にインスタンス変数 fields の Hash の値が nil のものはスキップするようにしています。