こんにちは、なかむら(う)です。

ruby-bugs PR#1109の件ですが、要するにext/Win32API/Win32API.c
の中でData_Wrap_Structの第一引数にクラスじゃないオブジェクト
を渡しているのが原因でした。

それ自体はバグなので直しましたが、このバグはObjectSpace.each_object
くらいでしか発覚せず、しかもそこで発覚しても原因を探るのがと
ても面倒です。
そもそもData_Wrap_Structを呼び出す時点で間違っているのですか
ら、Data_Wrap_Struct(というかその実体のrb_data_object_alloc)
で第一引数をチェックしてエラーを出しちゃうというのはどうでし
ょうか?

Index: gc.c =================================================================== RCS file: /home/cvs/ruby/gc.c,v retrieving revision 1.153 diff -u -1 -p -w -r1.153 gc.c --- gc.c 6 Aug 2003 21:50:05 -0000 1.153 +++ gc.c 13 Aug 2003 05:02:12 -0000 @@ -344,2 +344,3 @@ rb_data_object_alloc(klass, datap, dmark NEWOBJ(data, struct RData); + Check_Type(klass, T_CLASS); OBJSETUP(data, klass, T_DATA);
それでは -- U.Nakamura <usa / osb.att.ne.jp>