From: Laurent Julliard Date: 2001-06-27T00:59:03+09:00 Subject: [ruby-talk:16911] Re: rb_define_method when argc is -1 Thanks for the clarification Guy. So now comes a second question which is really why I asked about the first one. I'm cuirrently working on a GNUstep (Objective C) binding for Ruby with Avi Bryant (also on this ML). And I'm faced with a problem that I cannot explain. We have a piece of code that is already running and all the rb_define_method seems to be accepted ok by Ruby. I can create new objects ok, display the methods associated with the new Ruby class, etc.... The problem I have is that after playing a couple of seconds with irb I always have an error message and ruby aborts. Here is a sample session (Foo is a dumb Objective C class with 3 little methods in it) irb(main):001:0> require 'obj/cupertino' true irb(main):003:0* Foo = ObjC.class("Foo") Jun 26 17:34:33 irb[26026] Request to register ObjC Class Foo (0x40278200) Jun 26 17:34:33 irb[26026] Request to register ObjC Class NSObject (0x40446d60) Jun 26 17:34:33 irb[26026] 91 instance and 114 class methods defined for class NSObject Jun 26 17:34:33 irb[26026] VALUE for new Ruby Class NSObject = 0x4022e0d8 Jun 26 17:34:33 irb[26026] 3 instance and 0 class methods defined for class Foo Jun 26 17:34:33 irb[26026] VALUE for new Ruby Class Foo = 0x4022c030 ObjC::Foo irb(main):004:0> p Foo ObjC::Foo nil irb(main):006:0* Foo.ancestors [ObjC::Foo, ObjC::NSObject, Object, Kernel] irb(main):007:0> a = Foo.new # then I repeat p Foo a couple times and the following error always shows up irb.rb:248: [BUG] rb_gc_mark(): unknown data type 0x20(0x40446d60) non object ruby 1.6.4 (2001-06-04) [i686-linux] Aborted What I don't understand here is that the value 0x40446d60 should be a Ruby VALUE but it actually is the Objective C id value of the corresponding class (see the Objective C log for the NSObject class) I have been stuck on this problem for a long time now and I do not know where to go from here.... -- Laurent JULLIARD - XR&T Technology and Alliances Office - Open Source team Xerox / 3400 Hillview Ave. PAHV 121 / Palo-Alto CA 94304 / USA Tel/Fax US: +1 650 813 7168 / 6860 - France: +33 4 76 61 5048 / 5199