[ruby-dev:39845] Re: [ruby-cvs:33238] Ruby:r26022 (trunk): * marshal.c (w_object): dump instance variables when using

From: Tanaka Akira <akr@...>
Date: 2009-12-06 00:29:34 UTC
List: ruby-dev #39845
2009/12/5  <nobu@ruby-lang.org>:
> nobu    2009-12-05 19:25:28 +0900 (Sat, 05 Dec 2009)
>
>  New Revision: 26022
>
>  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26022
>
>  Log:
>    * marshal.c (w_object): dump instance variables when using
>      marshal_dump.   [ruby-core:24211]
>
>    * variable.c (rb_ivar_count): added.

そうやって dump すると、dump できないものが入っていたときに
dump 不能になります。

% ./ruby -ve '
class C
  def initialize
    @a = 1
    @cache = STDIN
  end

  def marshal_dump
    [@a]
  end

  def marshal_load(arg)
    @a = arg[0]
  end
end
p Marshal.dump(C.new)
'
ruby 1.9.2dev (2009-12-06 trunk 26025) [i686-linux]
-e:16:in `dump': can't dump IO (TypeError)
        from -e:16:in `<main>'

以前、[ruby-dev:21475] でも指摘したことがありますが。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next