summaryrefslogtreecommitdiff
path: root/eval.c
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 /eval.c
parentae832cfa6636bd9f17fa8ed36eb602dfd646ffdb (diff)
* 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
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c4
1 files changed, 2 insertions, 2 deletions
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);