* class.c (rb_class_init_copy): raise a TypeError if the argument is

BasicObject.  [ruby-core:27060]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2010-02-06 15:26:34 +00:00
parent 141179186b
commit b09eabd430
3 changed files with 10 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Sun Feb 7 00:23:21 2010 Shugo Maeda <shugo@ruby-lang.org>
* class.c (rb_class_init_copy): raise a TypeError if the argument is
BasicObject. [ruby-core:27060]
Sat Feb 6 23:37:11 2010 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/ftp.rb (initialize): set @sock to a NullSocket instance to

View File

@ -180,6 +180,9 @@ rb_mod_init_copy(VALUE clone, VALUE orig)
VALUE
rb_class_init_copy(VALUE clone, VALUE orig)
{
if (orig == rb_cBasicObject) {
rb_raise(rb_eTypeError, "can't copy the root class");
}
if (RCLASS_SUPER(clone) != 0 || clone == rb_cBasicObject) {
rb_raise(rb_eTypeError, "already initialized class");
}

View File

@ -181,6 +181,8 @@ class TestClass < Test::Unit::TestCase
o = Object.new
c = class << o; self; end
assert_raise(TypeError) { c.dup }
assert_raise(TypeError) { BasicObject.dup }
end
def test_singleton_class