aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-28 01:43:10 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-28 01:43:10 +0000
commit94f9fc2b6efa59a6636c25d263f09bd0964ebab9 (patch)
tree49524495a69a7533d2dae05ff2a9b7b562fec7a3
parentae832cfa6636bd9f17fa8ed36eb602dfd646ffdb (diff)
downloadruby-94f9fc2b6efa59a6636c25d263f09bd0964ebab9.tar.gz
* eval.c (rb_call): a bug in method cache look-up.
http://www.rubyist.net/~matz/20060720.html#c04 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10633 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--eval.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 819b39459e..c620e1ffe7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Jul 28 10:41:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call): a bug in method cache look-up.
+ http://www.rubyist.net/~matz/20060720.html#c04
+
Fri Jul 28 10:19:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* sprintf.c (rb_f_sprintf): documentation update patch from Jacob
diff --git a/eval.c b/eval.c
index fab90ea516..d9ab3826d5 100644
--- a/eval.c
+++ b/eval.c
@@ -5926,13 +5926,13 @@ rb_call(VALUE klass, VALUE recv, ID mid,
ent = NULL;
}
}
- if (ent) {
+ if (!ent) {
ent = cache[LOOKUP_NORMAL] + EXPR1(klass, mid);
if (ent->mid != mid || ent->klass != klass) {
ent = NULL;
}
}
- if (ent) {
+ if (!ent) {
if (!ent->method)
return method_missing(recv, mid, argc, argv, block,
scope==CALLING_VCALL?CSTAT_VCALL:0);