* gc.c (rb_gc): use rb_gc_mark_maybe() to mark registered C

addresses.  C variables may not hold valid reference to Ruby
  objects. [ruby-core:00975]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2003-04-21 08:17:18 +00:00
parent 472672dfe6
commit 7e1d69f231
3 changed files with 8 additions and 2 deletions

View File

@ -27,6 +27,12 @@ Sat Apr 19 21:55:10 2003 Akinori MUSHA <knu@iDaemons.org>
* ext/Setup*: Add zlib and remove bogus and obsolete entries.
Sat Apr 19 14:47:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* gc.c (rb_gc): use rb_gc_mark_maybe() to mark registered C
addresses. C variables may not hold valid reference to Ruby
objects. [ruby-core:00975]
Sat Apr 19 00:56:13 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* struct.c (rb_struct_eql): should compare values with "eql?".

2
gc.c
View File

@ -1236,7 +1236,7 @@ rb_gc()
/* mark protected global variables */
for (list = global_List; list; list = list->next) {
rb_gc_mark(*list->varptr);
rb_gc_mark_maybe(*list->varptr);
}
rb_mark_end_proc();
rb_gc_mark_global_tbl();

View File

@ -156,7 +156,7 @@ module Singleton
@__instance__ = new
ensure
if @__instance__
def self.instance() @__instance__ end
define_method(:instance) {@__instance__}
else
@__instance__ = nil
end