summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-08-21 16:00:34 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-08-21 16:00:34 +0000
commit5eafb6e10dcc90af83bfe10045244a0fef12bdd2 (patch)
tree6282ebc0393792d96245eca04b989d637b1aacc8 /eval.c
parent39503e4d0fca75b03e78a03a55dec8f063dec224 (diff)
* eval.c (block_pass): improve passing current block.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 986eb197ac..6612bacb93 100644
--- a/eval.c
+++ b/eval.c
@@ -7229,6 +7229,13 @@ block_pass(self, node)
}
}
+ if (ruby_block && ruby_block->block_obj == proc) {
+ PUSH_ITER(ITER_PRE);
+ result = rb_eval(self, node->nd_iter);
+ POP_ITER();
+ return result;
+ }
+
Data_Get_Struct(proc, struct BLOCK, data);
orphan = block_orphan(data);