summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vm_method.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/vm_method.c b/vm_method.c
index 2b2e28e10c..d8d1552432 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -1304,10 +1304,15 @@ rb_method_boundp(VALUE klass, ID id, int ex)
}
if (me != NULL) {
- if ((ex & ~BOUND_RESPONDS) &&
- ((METHOD_ENTRY_VISI(me) == METHOD_VISI_PRIVATE) ||
- ((ex & BOUND_RESPONDS) && (METHOD_ENTRY_VISI(me) == METHOD_VISI_PROTECTED)))) {
- return 0;
+ if (ex & ~BOUND_RESPONDS) {
+ switch (METHOD_ENTRY_VISI(me)) {
+ case METHOD_VISI_PRIVATE:
+ return 0;
+ case METHOD_VISI_PROTECTED:
+ if (ex & BOUND_RESPONDS) return 0;
+ default:
+ break;
+ }
}
if (me->def->type == VM_METHOD_TYPE_NOTIMPLEMENTED) {