summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'object.c')
-rw-r--r--object.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/object.c b/object.c
index 1bbcd5f2ca..49e7347ee0 100644
--- a/object.c
+++ b/object.c
@@ -904,13 +904,23 @@ rb_obj_methods(argc, argv, obj)
VALUE *argv;
VALUE obj;
{
+ retry:
if (argc == 0) {
VALUE args[1];
args[0] = Qtrue;
return rb_class_instance_methods(1, args, CLASS_OF(obj));
}
- return rb_class_instance_methods(argc, argv, CLASS_OF(obj));
+ else {
+ VALUE recur;
+
+ rb_scan_args(argc, argv, "1", &recur);
+ if (RTEST(recur)) {
+ argc = 0;
+ goto retry;
+ }
+ return rb_obj_singleton_methods(argc, argv, obj);
+ }
}
static VALUE