diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-15 16:50:37 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-15 16:50:37 +0000 |
commit | faa93e847da75c0b8f5bae70f8362f22865388a6 (patch) | |
tree | 578f369c8e2ef0410de361389f22ef0beb033f76 /eval.c | |
parent | 1c4f7a4c642f539f0bfc6db4234dde99d19c2b16 (diff) | |
download | ruby-faa93e847da75c0b8f5bae70f8362f22865388a6.tar.gz |
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@17351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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 { |