From: Eric Christopherson Date: 2012-04-03T09:29:06+09:00 Subject: Re: TypeError Message. Help required On Mon, Apr 2, 2012 at 2:18 PM, Tridib Bandopadhyay wrote: > I have created an extension and within the extension file I have > declared one function like- > > VALUE free(T * self, VALUE name)    //T is the struct > { >   free(StringValuePtr(name)); > } > > rb_define_method(hw_cMyClass, "free", talloc_free,0); > > And from *.rb file I am calling the free function like > > t.free() > > > But its giving me error like- > > rungc.rb:10:in `free': can't convert false into String (TypeError) >        from rungc.rb:10 > > Can anyone tell me what I am doing wrong? ANd how to fix it? I don't know precisely, but I can tell you that your call to rb_define_method sets it up so the C function `talloc_free` is the implementation of the Ruby `free` method -- not the function you have defined as `free`. Also note that it's a bad idea (if it's allowed at all) to name something `free` in C -- that's the name of the standard library's free function.