summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-02 08:07:41 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-02 08:07:41 +0000
commitb1d2491fb42e3c5f254ac761db736d0129d0ebd5 (patch)
tree26415cc045ab2c73e79d0204c724d4c7abe9f237
parent27b1ee2773a840f3b3db5a6a5b7cc2ad02d7b3a2 (diff)
merges r29518 from trunk into ruby_1_9_2.
-- * 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/branches/ruby_1_9_2@30049 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--class.c2
-rw-r--r--test/ruby/test_class.rb4
-rw-r--r--version.h2
4 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 423a2fb60e..01f74c4430 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Oct 17 10:40:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * 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 <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c (ole_encoding2cp): set codepage 20936
diff --git a/class.c b/class.c
index e6fb74816b..bb65ce487f 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 a23834a2dd..135a4506d7 100644
--- a/version.h
+++ b/version.h
@@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.2"
-#define RUBY_PATCHLEVEL 79
+#define RUBY_PATCHLEVEL 80
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1