From 298349d03bcdb6c25420d9a92265816d59892a1f Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 26 Jul 2011 16:05:30 +0000 Subject: * vm_method.c (obj_respond_to): fix the respond_to_missing? override case. based on the patch by Jeremy Evans at [ruby-core:38417]. [Feature #5072] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_method.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'vm_method.c') diff --git a/vm_method.c b/vm_method.c index 927bbc10f1..d7d18cf4fa 100644 --- a/vm_method.c +++ b/vm_method.c @@ -1259,8 +1259,15 @@ obj_respond_to(int argc, VALUE *argv, VALUE obj) ID id; rb_scan_args(argc, argv, "11", &mid, &priv); - if (!(id = rb_check_id(&mid))) + if (!(id = rb_check_id(&mid))) { + if (!rb_method_basic_definition_p(CLASS_OF(obj), respond_to_missing)) { + VALUE args[2]; + args[0] = ID2SYM(rb_to_id(mid)); + args[1] = priv; + return rb_funcall2(obj, respond_to_missing, 2, args); + } return Qfalse; + } if (basic_obj_respond_to(obj, id, !RTEST(priv))) return Qtrue; return Qfalse; -- cgit v1.2.3