[ruby-dev:31722] Re: [BUG] non-initialized struct

From: "U.Nakamura" <usa@...>
Date: 2007-09-03 05:53:18 UTC
List: ruby-dev #31722
こんにちは、なかむら(う)です。

In message "[ruby-dev:31721] Re: [BUG] non-initialized struct"
    on Sep.03,2007 13:27:46, <akr@fsij.org> wrote:
| In article <20070903113920.521D.USA@garbagecollect.jp>,
|   "U.Nakamura" <usa@garbagecollect.jp> writes:
| 
| > しかし、そもそもStructじゃない物に対してrb_struct_s_members()
| > を呼ぶというコードはどう考えてもバグってるわけで、そこで[BUG]
| > が出るのもmarshal側でチェックすべきだというのも正当な考え方と
| > いう気もします。
| 
| 私は Struct 以外で T_STRUCT を使うという話 (Range) を考えて
| いるので、どう考えてもバグ、って程には感じないです。

この場合、「Structじゃないもの」は、えーと、Structの形をして
ないもの、ということでお願いします。
# なんかうまく言葉に出来ない


| あと、[ruby-dev:31718] のパッチは、TYPE(klass) としてますが、
| これはいつも T_CLASS なんではないかと思います。

脳が膿んでました。
  if (rb_class_inherited_p(klass, rb_cStruct) != Qtrue)
あたりになりますね。
しかしこれでもStructをdupったものが使われるとloadできなくなる
からダメ、と。

話としては単純なんだけど意外と難しいですねえ。
もちろん、なかださんが言ったようにrb_struct_s_members()のrb_bug()
をrb_raise()に変えれば一瞬で解決ですが...


それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>



In This Thread

Prev Next