summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-30 06:20:09 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-30 06:20:09 +0000
commitbe227c54827cdc75d1ee990dcca8b033e7e46aef (patch)
tree338b88745605af71d31e05580d278c9a186cae9f /eval.c
parentd608e337f4bbbd71ea861f2ab26a66986b0db943 (diff)
downloadruby-be227c54827cdc75d1ee990dcca8b033e7e46aef.tar.gz
ruby-be227c54827cdc75d1ee990dcca8b033e7e46aef.tar.xz
ruby-be227c54827cdc75d1ee990dcca8b033e7e46aef.zip
* eval.c (rb_eval): pre-evaluate argument for unambiguous
evaluation order. [ruby-dev:26383] * lib/delegate.rb (Delegator::method_missing): forward unknown method to the destination. suggested by <christophe.poucet@gmail.com>. [ruby-talk:146776] * process.c (detach_process_watcher): terminate process watcher thread right after rb_waitpid() succeed. [ruby-talk:146430] git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@8676 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/eval.c b/eval.c
index 886914c42..287d00bf4 100644
--- a/eval.c
+++ b/eval.c
@@ -3256,9 +3256,11 @@ rb_eval(self, n)
case NODE_DOT2:
case NODE_DOT3:
- result = rb_range_new(rb_eval(self, node->nd_beg),
- rb_eval(self, node->nd_end),
- nd_type(node) == NODE_DOT3);
+ {
+ VALUE beg = rb_eval(self, node->nd_beg);
+ VALUE end = rb_eval(self, node->nd_end);
+ result = rb_range_new(beg, end, nd_type(node) == NODE_DOT3);
+ }
break;
case NODE_FLIP2: /* like AWK */
@@ -9905,9 +9907,9 @@ rb_gc_mark_threads()
rb_gc_mark((VALUE)ruby_cref);
if (!curr_thread) return;
- FOREACH_THREAD(th) {
+ FOREACH_THREAD_FROM(main_thread, th) {
rb_gc_mark(th->thread);
- } END_FOREACH(th);
+ } END_FOREACH_FROM(main_thread, th);
}
static void