diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-05 07:11:44 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-05 07:11:44 +0000 |
commit | 78a78b45d69c44a5d9278c8f22a83f953b70d219 (patch) | |
tree | c1c7797a52cab2b67cd20773f97127edb5c54c67 /vm_method.c | |
parent | b2e340bf70a6cc09dc67ae0a45ed37c68b342d3d (diff) |
* vm_method.c (rb_method_boundp): Return false for protected
methods when called from Kernel#respond_to?. [ruby-dev:40461]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/vm_method.c b/vm_method.c index 50f0b12e5a..becce27c1c 100644 --- a/vm_method.c +++ b/vm_method.c @@ -566,8 +566,9 @@ rb_method_boundp(VALUE klass, ID id, int ex) rb_method_entry_t *me = rb_method_entry(klass, id); if (me != 0) { - if ((ex & ~NOEX_RESPONDS) && (me->flag & NOEX_PRIVATE)) { - return FALSE; + if ((ex & NOEX_RESPONDS) && (me->flag & NOEX_PROTECTED) || + (ex & ~NOEX_RESPONDS) && (me->flag & NOEX_PRIVATE)) { + return 0; } if (!me->def) return 0; if (me->def->type == VM_METHOD_TYPE_NOTIMPLEMENTED) { |