Modified: MacRuby/branches/icu/ruby.c (3607 => 3608)
--- MacRuby/branches/icu/ruby.c 2010-02-24 23:05:40 UTC (rev 3607)
+++ MacRuby/branches/icu/ruby.c 2010-02-24 23:58:23 UTC (rev 3608)
@@ -832,7 +832,7 @@
return enc;
}
-VALUE rb_progname;
+VALUE rb_progname = Qnil;
VALUE rb_argv0;
static rb_encoding *src_encoding;
@@ -1276,14 +1276,18 @@
}
}
#endif
+ GC_RELEASE(rb_progname);
rb_progname = rb_tainted_str_new(s, i);
+ GC_RETAIN(rb_progname);
}
void
ruby_script(const char *name)
{
- if (name) {
+ if (name != NULL) {
+ GC_RELEASE(rb_progname);
rb_progname = rb_tainted_str_new2(name);
+ GC_RETAIN(rb_progname);
}
}
@@ -1350,7 +1354,6 @@
rb_define_hooked_variable("$0", &rb_progname, 0, set_arg0);
rb_define_hooked_variable("$PROGRAM_NAME", &rb_progname, 0, set_arg0);
- GC_ROOT(&rb_progname);
rb_define_global_const("ARGV", rb_argv);
rb_global_variable(&rb_argv0);