summaryrefslogtreecommitdiff
path: root/class.c
diff options
context:
space:
mode:
Diffstat (limited to 'class.c')
-rw-r--r--class.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/class.c b/class.c
index 24b2289552..4d8db41f28 100644
--- a/class.c
+++ b/class.c
@@ -622,12 +622,12 @@ rb_obj_singleton_methods(argc, argv, obj)
}
klass = CLASS_OF(obj);
list = st_init_numtable();
- while (klass && FL_TEST(klass, FL_SINGLETON)) {
+ if (klass && FL_TEST(klass, FL_SINGLETON)) {
st_foreach(RCLASS(klass)->m_tbl, method_entry, (st_data_t)list);
klass = RCLASS(klass)->super;
}
if (RTEST(recur)) {
- while (klass && TYPE(klass) == T_ICLASS) {
+ while (klass && (FL_TEST(klass, FL_SINGLETON) || TYPE(klass) == T_ICLASS)) {
st_foreach(RCLASS(klass)->m_tbl, method_entry, (st_data_t)list);
klass = RCLASS(klass)->super;
}