summaryrefslogtreecommitdiffstats
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
commitefa6ec0334bba2e2753dd68d9735997de2cb1dbb (patch)
tree6282ebc0393792d96245eca04b989d637b1aacc8
parent3f3f0dd9f44cd667f941628ae6cfaddd7641d8ba (diff)
downloadruby-efa6ec0334bba2e2753dd68d9735997de2cb1dbb.tar.gz
ruby-efa6ec0334bba2e2753dd68d9735997de2cb1dbb.tar.xz
ruby-efa6ec0334bba2e2753dd68d9735997de2cb1dbb.zip
* eval.c (block_pass): improve passing current block.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--eval.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ad8152a9c..22046e973 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Fri Aug 22 01:00:31 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (block_pass): improve passing current block.
+
Tue Aug 21 00:13:00 2003 Shigeo Kobayashi <shigek@ruby-lang.org>
* ext/bigdecimal/bigdecimal.c: Int. overflow bug in multiplication fixed,
diff --git a/eval.c b/eval.c
index 986eb197a..6612bacb9 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);