summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-06-10 15:59:05 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-06-10 15:59:05 +0000
commit32e3478725e1fde80e8f97ad95550120ece251a0 (patch)
treebe2d8d11a8cf27c215a65d754b4deae6a6bd6cc6
parent940104867afa60068c4cc8410b3b0597509832cd (diff)
merges r28101 from trunk into ruby_1_9_2.
-- * insns.def (defined): respond_to_missing? may not be available (for BasicObject instances). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--insns.def11
2 files changed, 14 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 50d19c36c4..b2ebd550ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon May 31 02:17:54 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * insns.def (defined): respond_to_missing? may not be available
+ (for BasicObject instances).
+
Sun May 30 21:48:07 2010 Yusuke Endoh <mame@tsg.ne.jp>
* lib/tempfile.rb (Tempfile#unlink): leave @data. Assigning nil to
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: