How do I tell ruby to increment it’s garbage collector if I want to
keep hold of a VALUE in a C extension.
example:
VALUE message;
static VALUE store_message(VALUE self, VALUE msg) {
// tell ruby to retain…
// rb_retain(msg) ?
message = msg;
return Qnil;
}
Hi,
In message “Re: retain VALUE from C extension”
on Thu, 11 Oct 2007 00:29:47 +0900, “Gaspard B.”
[email protected] writes:
|How do I tell ruby to increment it’s garbage collector if I want to
|keep hold of a VALUE in a C extension.
I’m not sure what you mean by ‘increment’ or ‘retain’, but
rb_global_variable() may be the answer. See README.EXT.
matz.
Yes, I think this is what I was looking for. As I understand, this
“declares” the address as needing “global marking” by adding it to
global_List.
/* mark protected global variables */
for (list = global_List; list; list = list->next) {
rb_gc_mark_maybe(*list->varptr);
}
I’m not sure what you mean by ‘increment’ or ‘retain’, but
rb_global_variable() may be the answer. See README.EXT.
matz.
Effectivelly, “retain” (objective-C terminology) is not appropriate.
From what I understand the mark & sweep garbage collecting process is
quite different from the reference counting strategy I was familiar
with.
Thanks for the information.
Gaspard