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/