From: "U.Nakamura" Date: 2007-09-03T11:07:28+09:00 Subject: [ruby-dev:31718] Re: [BUG] non-initialized struct こんにちは、なかむら(う)です。 In message "[ruby-dev:31709] [BUG] non-initialized struct" on Sep.02,2007 14:49:01, wrote: | 以下のようにすると [BUG] が出ます。 | | % ./ruby -ve ' | S = Struct.new(:a) | s = Marshal.dump(S.new(1)) | class Object | remove_const :S | end | class S | end | p Marshal.load(s)' 1.8でも同様なのでとりあえず1.8で見てみましたが、こんな感じで しょうか? # メッセージはなんか代案求む Index: marshal.c =================================================================== --- marshal.c (revision 13339) +++ marshal.c (working copy) @@ -1198,6 +1198,8 @@ r_object0(arg, proc, ivp, extmod) ID slot; klass = path2class(r_unique(arg)); + if (TYPE(klass) != T_STRUCT) + rb_raise(rb_eArgError, "%s is not a struct", rb_class2name(klass)); mem = rb_struct_s_members(klass); if (mem == Qnil) { rb_raise(rb_eTypeError, "uninitialized struct"); それでは。 -- U.Nakamura