From 94f9fc2b6efa59a6636c25d263f09bd0964ebab9 Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 28 Jul 2006 01:43:10 +0000 Subject: [PATCH] * 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 --- ChangeLog | 5 +++++ eval.c | 4 ++-- 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 + + * 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 * 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);