From: kumaryu Date: 2007-09-27T02:05:10+09:00 Subject: [ruby-dev:31870] marshal_dumpで不正なデータが書き出される kumaryuと申します。 marshal_dumpでテンポラリなオブジェクトを返している時に GCが発生すると間違ったオブジェクトへのリンクが書き出されます。 $ cat ~/test.rb class A def initialize(val) @value = val end def marshal_dump GC.start [@value] end def marshal_load(data) p data end end Marshal.load(Marshal.dump(Array.new(10) {|i| A.new(i) })) $ ./ruby -v ruby 1.9.0 (2007-09-26 patchlevel 0) [i686-darwin8.10.1] $ ./ruby ~/test.rb [0] [1] [0] [1] [0] [1] [0] [1] [0] [1] 正しくはこうなって欲しいです。 $ ./ruby ~/test.rb [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 以上です。 ----------------------------------- Ryuichi Sakamoto (kumaryu) mail: kumaryu@kumaryu.net website: http://www.kumaryu.net/ -----------------------------------