diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-06-27 13:40:34 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-06-27 13:40:34 +0000 |
commit | d4269d7b7c5c89b98c3f920dcadde1a635f5d72d (patch) | |
tree | f396f54b8813668aa1eb83dee6bd567399f8efe3 /class.c | |
parent | cf3a8f09b806dc6f31363e845d9e93d5e046af91 (diff) |
fix null m_tbl
* class.c (rb_obj_singleton_methods): m_tbl in prepended class/module
is NULL.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'class.c')
-rw-r--r-- | class.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -1172,12 +1172,14 @@ rb_obj_singleton_methods(int argc, VALUE *argv, VALUE obj) klass = CLASS_OF(obj); list = st_init_numtable(); if (klass && FL_TEST(klass, FL_SINGLETON)) { - st_foreach(RCLASS_M_TBL(klass), method_entry_i, (st_data_t)list); + if (RCLASS_M_TBL(klass)) + st_foreach(RCLASS_M_TBL(klass), method_entry_i, (st_data_t)list); klass = RCLASS_SUPER(klass); } if (RTEST(recur)) { while (klass && (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) { - st_foreach(RCLASS_M_TBL(klass), method_entry_i, (st_data_t)list); + if (RCLASS_M_TBL(klass)) + st_foreach(RCLASS_M_TBL(klass), method_entry_i, (st_data_t)list); klass = RCLASS_SUPER(klass); } } |