Ruby 1.9 porting problem

I am having problems porting my extension to 1.9.

I'm doing something like:

static VALUE my_alloc(VALUE klass)
{
  return Data_Wrap_Struct(klass, NULL, my_free, NULL);
}
...
static VALUE my_init(int argc, VALUE *argv, VALUE self)
{
  ...
  Check_Type(self,T_DATA);
  DATA_PTR(self) = my_var;
  ...
}

But on the "Check_Type(self,T_DATA)" I get:
"[BUG] unknown type 0x12".

This worked fine in 1.8. What's the correct way to do this in 1.9?

Regards,
  Jeff Davis

Jeff Davis wrote:

I am having problems porting my extension to 1.9.

I'm doing something like:

static VALUE my_alloc(VALUE klass)
{
  return Data_Wrap_Struct(klass, NULL, my_free, NULL);
}
...
static VALUE my_init(int argc, VALUE *argv, VALUE self)
{
  ...
  Check_Type(self,T_DATA);
  DATA_PTR(self) = my_var;

That generally should work. Have you tried with a non-NULL value in Data_Wrap_Struct? Have you tried a 0-ary method first?

static VALUE my_init(VALUE self)
{
    ...
    Check_Type(self,T_DATA);
    DATA_PTR(self) = my_var;

Regards,

   Michael

Thank you for the reply. I think I found the problem: I was compiling
the extension against ruby 1.9, but when I ran irb, I was mistakenly
running irb 1.8.

Too many combinations of installations to keep track of when trying to
do portability testing :wink:

Regards,
  Jeff Davis

···

On Wed, 2008-01-02 at 06:59 +0900, Michael Neumann wrote:

Jeff Davis wrote:
> I am having problems porting my extension to 1.9.
>
> I'm doing something like:
>
> static VALUE my_alloc(VALUE klass)
> {
> return Data_Wrap_Struct(klass, NULL, my_free, NULL);
> }
> ...
> static VALUE my_init(int argc, VALUE *argv, VALUE self)
> {
> ...
> Check_Type(self,T_DATA);
> DATA_PTR(self) = my_var;

That generally should work. Have you tried with a non-NULL value in
Data_Wrap_Struct? Have you tried a 0-ary method first?

static VALUE my_init(VALUE self)
{
    ...
    Check_Type(self,T_DATA);
    DATA_PTR(self) = my_var;