Protect objects of a C extension from GC

Protect objects of a C extension from GC

Post by Detlef Rei » Mon, 30 Jul 2007 21:43:41


Hi,

I'm writing on a video procession system. In this i have a C extension,
which creates ruby objects that encapsulate images. This objects are
passed with some ruby code to an other C extension which shall store
them for later output.

My problem is, that the GC destroys the objects while they are needed in
the future. I've tried to prevent this by calling

rb_gc_register_address (&myobject);

on the object and after i'm done with the object

rb_gc_unregister_address (&myobject);

But that seems to be ignorred.


Any hints about this?


TIA
detlef
 
 
 

Protect objects of a C extension from GC

Post by Tim Hunte » Tue, 31 Jul 2007 00:23:02


Are you creating the objects using the Data_Make/Wrap/Get_Struct macros?
If so, establish a mark routine that GC can call so you can mark your
objects as being still in use by calling the rb_gc_mark function. See
Chapter 21 in the Pickaxe.

--
RMagick OS X Installer [ http://www.yqcomputer.com/ ]
RMagick Hints & Tips [ http://www.yqcomputer.com/ ]
RMagick Installation FAQ [ http://www.yqcomputer.com/ ]