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

ruby-changes:24185

From: nobu <ko1@a...>
Date: Wed, 27 Jun 2012 21:01:54 +0900 (JST)
Subject: [ruby-changes:24185] nobu:r36236 (trunk): fix null m_tbl

nobu	2012-06-27 21:01:39 +0900 (Wed, 27 Jun 2012)

  New Revision: 36236

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

  Log:
    fix null m_tbl
    
    * class.c (class_instance_method_list): m_tbl in prepended
      class/module is NULL.  [ruby-core:45915][Bug #6655]

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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 36235)
+++ ChangeLog	(revision 36236)
@@ -1,3 +1,8 @@
+Wed Jun 27 21:01:32 2012  Nobuyoshi Nakada  <nobu@r...>
+
+	* class.c (class_instance_method_list): m_tbl in prepended
+	  class/module is NULL.  [ruby-core:45915][Bug #6655]
+
 Wed Jun 27 16:48:48 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* class.c (rb_prepend_module): prepend module into another module.
Index: class.c
===================================================================
--- class.c	(revision 36235)
+++ class.c	(revision 36236)
@@ -925,7 +925,7 @@
 
     list = st_init_numtable();
     for (; mod; mod = RCLASS_SUPER(mod)) {
-	st_foreach(RCLASS_M_TBL(mod), method_entry_i, (st_data_t)list);
+	if (RCLASS_M_TBL(mod)) st_foreach(RCLASS_M_TBL(mod), method_entry_i, (st_data_t)list);
 	if (BUILTIN_TYPE(mod) == T_ICLASS) continue;
 	if (obj && FL_TEST(mod, FL_SINGLETON)) continue;
 	if (!recur) break;
Index: test/ruby/test_module.rb
===================================================================
--- test/ruby/test_module.rb	(revision 36235)
+++ test/ruby/test_module.rb	(revision 36236)
@@ -1270,4 +1270,9 @@
     expected = [:M2,[:M3,[:C1,[:M4,[:M1,[:C0,[:M0],:C0],:M1],:M4],:C1],:M3],:M2]
     assert_equal(expected, obj.m1)
   end
+
+  def test_prepend_instance_methods
+    bug6655 = '[ruby-core:45915]'
+    assert_equal(Object.instance_methods, Class.new {prepend Module.new}.instance_methods, bug6655)
+  end
 end

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

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