[前][次][番号順一覧][スレッド一覧]

ruby-changes:14748

From: shugo <ko1@a...>
Date: Sun, 7 Feb 2010 00:30:24 +0900 (JST)
Subject: [ruby-changes:14748] Ruby:r26607 (trunk): * class.c (rb_class_init_copy): raise a TypeError if the argument is

shugo	2010-02-07 00:26:34 +0900 (Sun, 07 Feb 2010)

  New Revision: 26607

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26607

  Log:
    * class.c (rb_class_init_copy): raise a TypeError if the argument is
      BasicObject.  [ruby-core:27060]

  Modified files:
    trunk/ChangeLog
    trunk/class.c
    trunk/test/ruby/test_class.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 26606)
+++ ChangeLog	(revision 26607)
@@ -1,3 +1,8 @@
+Sun Feb  7 00:23:21 2010  Shugo Maeda  <shugo@r...>
+
+	* 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@r...>
 
 	* lib/net/ftp.rb (initialize): set @sock to a NullSocket instance to
Index: class.c
===================================================================
--- class.c	(revision 26606)
+++ class.c	(revision 26607)
@@ -180,6 +180,9 @@
 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");
     }
Index: test/ruby/test_class.rb
===================================================================
--- test/ruby/test_class.rb	(revision 26606)
+++ test/ruby/test_class.rb	(revision 26607)
@@ -181,6 +181,8 @@
     o = Object.new
     c = class << o; self; end
     assert_raise(TypeError) { c.dup }
+
+    assert_raise(TypeError) { BasicObject.dup }
   end
 
   def test_singleton_class

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]