summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);