summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-30 17:20:15 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-05-30 17:20:15 +0000
commite0ad353fe0419b642fd1f6070e8527b61cb0e4ed (patch)
treeb15753fca0395ae5800fc70c6f64dfcc4eac7d04 /insns.def
parentb6e91b9ddf09ef89cb72207cd690bd079e3030b6 (diff)
* insns.def (defined): respond_to_missing? may not be available
(for BasicObject instances). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def11
1 files changed, 9 insertions, 2 deletions
diff --git a/insns.def b/insns.def
index 23c0143907..f75007dca2 100644
--- a/insns.def
+++ b/insns.def
@@ -799,8 +799,15 @@ defined
}
}
}
- if (RTEST(rb_funcall(v, rb_intern("respond_to_missing?"), 2, obj, Qfalse)))
- expr_type = "method";
+ {
+ VALUE args[2];
+ VALUE r;
+
+ args[0] = obj; args[1] = Qfalse;
+ r = rb_check_funcall(v, rb_intern("respond_to_missing?"), 2, args);
+ if (r != Qundef && RTEST(r))
+ expr_type = "method";
+ }
break;
}
case DEFINED_YIELD: