summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-04-21 08:17:18 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-04-21 08:17:18 +0000
commit7e1d69f231ca1de06ee629b0d24d56258067d2e3 (patch)
tree1033c57d071c082dad15e8795c43dcd166198c39
parent472672dfe6e968c41c16b81c8db3f0f73d2f825f (diff)
* 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
-rw-r--r--ChangeLog6
-rw-r--r--gc.c2
-rw-r--r--lib/singleton.rb2
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 0e9e80831a..fc5bf28fd3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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?".
diff --git a/gc.c b/gc.c
index ae7cff920d..9097225184 100644
--- a/gc.c
+++ b/gc.c
@@ -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();
diff --git a/lib/singleton.rb b/lib/singleton.rb
index 3c20c13253..147b04187c 100644
--- a/lib/singleton.rb
+++ b/lib/singleton.rb
@@ -156,7 +156,7 @@ module Singleton
@__instance__ = new
ensure
if @__instance__
- def self.instance() @__instance__ end
+ define_method(:instance) {@__instance__}
else
@__instance__ = nil
end