Revision
3608
Author
lsansonetti@apple.com
Date
2010-02-24 15:58:23 -0800 (Wed, 24 Feb 2010)

Log Message

always retain rb_progname

Modified Paths

Diff

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);