From ffa3b760d1bc2871303fea95b876fda33c138b61 Mon Sep 17 00:00:00 2001 From: ko1 Date: Sun, 15 Jun 2008 16:50:37 +0000 Subject: * eval.c (rb_f_block_given_p): fix to skip class frame. [ruby-core:14813] * KNOWNBUGS.rb, bootstraptest/test_method.rb: move solved test. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@17351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index f6424372f..3e9512e5f 100644 --- a/eval.c +++ b/eval.c @@ -545,7 +545,9 @@ int rb_block_given_p(void) { rb_thread_t *th = GET_THREAD(); - if (GC_GUARDED_PTR_REF(th->cfp->lfp[0])) { + + if ((th->cfp->lfp[0] & 0x02) == 0 && + GC_GUARDED_PTR_REF(th->cfp->lfp[0])) { return Qtrue; } else { @@ -588,7 +590,9 @@ rb_f_block_given_p(void) rb_control_frame_t *cfp = th->cfp; cfp = vm_get_ruby_level_caller_cfp(th, RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp)); - if (cfp != 0 && GC_GUARDED_PTR_REF(cfp->lfp[0])) { + if (cfp != 0 && + (cfp->lfp[0] & 0x02) == 0 && + GC_GUARDED_PTR_REF(cfp->lfp[0])) { return Qtrue; } else { -- cgit