summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-05 07:11:44 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-05 07:11:44 +0000
commit78a78b45d69c44a5d9278c8f22a83f953b70d219 (patch)
treec1c7797a52cab2b67cd20773f97127edb5c54c67 /vm_method.c
parentb2e340bf70a6cc09dc67ae0a45ed37c68b342d3d (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.c5
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) {