From 137d82569f961a908daa0331a0664a0eca3e8f93 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 17 Oct 2010 01:40:22 +0000 Subject: [PATCH] * class.c (rb_define_{class,module}_id_under): register to be marked, which probably are defined and used internally. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ class.c | 2 ++ test/ruby/test_class.rb | 4 ++++ version.h | 4 ++-- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 99de2cbd46..d6f0e51b42 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Oct 17 10:40:17 2010 Nobuyoshi Nakada + + * class.c (rb_define_{class,module}_id_under): register to be + marked, which probably are defined and used internally. + Sat Oct 16 11:10:55 2010 Masaki Suketa * ext/win32ole/win32ole.c (ole_encoding2cp): set codepage 20936 diff --git a/class.c b/class.c index 4610f4dfa7..31b407038e 100644 --- a/class.c +++ b/class.c @@ -524,6 +524,7 @@ rb_define_class_id_under(VALUE outer, ID id, VALUE super) rb_set_class_path_string(klass, outer, rb_id2str(id)); rb_const_set(outer, id, klass); rb_class_inherited(super, klass); + rb_gc_register_mark_object(klass); return klass; } @@ -590,6 +591,7 @@ rb_define_module_id_under(VALUE outer, ID id) module = rb_define_module_id(id); rb_const_set(outer, id, module); rb_set_class_path_string(module, outer, rb_id2str(id)); + rb_gc_register_mark_object(module); return module; } diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index c81f0752d4..3f18294e0f 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -236,4 +236,8 @@ class TestClass < Test::Unit::TestCase copy.send(:include, mod) assert_equal("mod#foo", copy.new.foo) end + + def test_nested_class_removal + assert_normal_exit('File.__send__(:remove_const, :Stat); at_exit{File.stat(".")}; GC.start') + end end diff --git a/version.h b/version.h index b579dcf7c6..a124ed8c9d 100644 --- a/version.h +++ b/version.h @@ -1,11 +1,11 @@ #define RUBY_VERSION "1.9.3" -#define RUBY_RELEASE_DATE "2010-10-16" +#define RUBY_RELEASE_DATE "2010-10-17" #define RUBY_PATCHLEVEL -1 #define RUBY_BRANCH_NAME "trunk" #define RUBY_RELEASE_YEAR 2010 #define RUBY_RELEASE_MONTH 10 -#define RUBY_RELEASE_DAY 16 +#define RUBY_RELEASE_DAY 17 #include "ruby/version.h"