At Fri, 21 Dec 2001 19:09:26 +0900,
nobu.nokada / softhome.net wrote:
> It was exactly big.

Oops, I'd forgotten to mark ruby_sourcefile.


--- gc.c~ Fri Dec 21 18:35:57 2001 +++ gc.c Sun Dec 23 12:12:22 2001 @@ -438,5 +438,5 @@ rb_source_filename(f) VALUE name; - if (!st_lookup(source_filenames, f, (char *)&name)) { + if (!st_lookup(source_filenames, f, &name)) { name = rb_str_new2(f); OBJ_FREEZE(name); @@ -451,5 +451,5 @@ static enum st_retval sweep_source_filename(key, value) char *key; - char *value; + VALUE value; { if (!(RBASIC(value)->flags & FL_MARK)) @@ -634,5 +634,7 @@ rb_gc_mark_children(ptr) case T_NODE: - rb_gc_mark(obj->as.node.nd_file); + if (obj->as.node.nd_file) { + RBASIC(obj->as.node.nd_file)->flags |= FL_MARK; + } switch (nd_type(obj)) { case NODE_IF: /* 1,2,3 */ @@ -1191,4 +1193,5 @@ rb_gc() rb_mark_end_proc(); rb_gc_mark_global_tbl(); + rb_gc_mark(ruby_sourcefile); rb_mark_tbl(rb_class_tbl);
Nobu Nakada