Nested structures and C extensions

Hey everybody,

I’ve been wrestling with an issue in writing a Ruby extension with C.
I’m seeing that I can access (without Bus errors) top level attributes
in my initial structure that aren’t nestled into another C structure
that is a member of this initial structure.

On the other hand, if I try to access the members of some structure that
is a member of the base structure after setting up a pointer to that
base structure via Data_Get_Struct, I get Bus errors. Even after
initializing all those variables in my C initializer, they don’t come
back initialized when I pull them from a C implementation of an accessor
method.

I read some older posts under “Data_Make_Struct() considered dangerous?”
and the original poster described what may have been my problem. I’m
not really sure what the conclusion to that thread was, however. I’m
dealing with structs that contain multiple structs which, in turn,
contain other structs (along with regular primitive data such as
integers, etc.). I’m finding that the top-level structs give me easy,
Bus error-free access to things like integers and chars. Things get
hairy when I try to access structs from within instances of structs
after having created a pointer with Data_Get_Struct.

I’m not really interested in using SWIG, etc., so does anybody have any
ideas about how to go about fixing this problem?

Thanks in advance!

Hi,

In message “Re: Nested structures and C extensions”
on Mon, 16 Jul 2007 12:43:06 +0900, Donnie Brasco
[email protected] writes:

|On the other hand, if I try to access the members of some structure that
|is a member of the base structure after setting up a pointer to that
|base structure via Data_Get_Struct, I get Bus errors. Even after
|initializing all those variables in my C initializer, they don’t come
|back initialized when I pull them from a C implementation of an accessor
|method.

Show us the code. Without seeing the actual code, there’s little
chance for us to help you.

          matz.