diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-02 08:07:41 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-12-02 08:07:41 +0000 |
commit | b1d2491fb42e3c5f254ac761db736d0129d0ebd5 (patch) | |
tree | 26415cc045ab2c73e79d0204c724d4c7abe9f237 | |
parent | 27b1ee2773a840f3b3db5a6a5b7cc2ad02d7b3a2 (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-- | ChangeLog | 5 | ||||
-rw-r--r-- | class.c | 2 | ||||
-rw-r--r-- | test/ruby/test_class.rb | 4 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 12 insertions, 1 deletions
@@ -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 @@ -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 @@ -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 |