summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-09-22 00:19:15 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-09-22 00:19:15 +0000
commit136b284b5959a6e71abf46da41b00dce102a0c59 (patch)
tree7d465bb841445d65384347e96477275de3fb81dc /ruby.c
parent141dae12c51031159bb0fe59be42e3507423d21a (diff)
* parse.y: remove global variables ruby_eval_tree and
ruby_eval_tree_begin. * array.c (rb_ary_collect_bang): element size might change during comparison. [ruby-dev:24300] * array.c (rb_ary_reject_bang): ditto. [ruby-dev:24300] * array.c (rb_ary_eql): ditto. [ruby-dev:24300] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/ruby.c b/ruby.c
index 52faf02f76..4ce5cb863a 100644
--- a/ruby.c
+++ b/ruby.c
@@ -347,12 +347,11 @@ require_libraries()
struct req_list *tmp;
save[0] = ruby_eval_tree;
- save[1] = ruby_eval_tree_begin;
- save[2] = NEW_BEGIN(0);
- ruby_eval_tree = ruby_eval_tree_begin = 0;
+ save[1] = NEW_BEGIN(0);
+ ruby_eval_tree = 0;
ruby_current_node = 0;
Init_ext(); /* should be called here for some reason :-( */
- ruby_current_node = save[2];
+ ruby_current_node = save[1];
ruby_set_current_source();
req_list_last = 0;
while (list) {
@@ -362,13 +361,12 @@ require_libraries()
free(list->name);
free(list);
list = tmp;
- ruby_current_node = save[2];
+ ruby_current_node = save[1];
ruby_set_current_source();
}
req_list_head.next = 0;
ruby_eval_tree = save[0];
- ruby_eval_tree_begin = save[1];
- rb_gc_force_recycle((VALUE)save[2]);
+ rb_gc_force_recycle((VALUE)save[1]);
ruby_current_node = 0;
}
@@ -430,6 +428,8 @@ moreswitches(s)
return s;
}
+NODE *ruby_eval_tree;
+
static void
proc_options(argc, argv)
int argc;
@@ -779,7 +779,7 @@ proc_options(argc, argv)
ruby_sourcefile = rb_source_filename(argv0);
if (e_script) {
require_libraries();
- rb_compile_string(script, e_script, 1);
+ ruby_eval_tree = rb_compile_string(script, e_script, 1);
}
else if (strlen(script) == 1 && script[0] == '-') {
load_stdin();
@@ -909,7 +909,7 @@ load_file(fname, script)
require_libraries(); /* Why here? unnatural */
if (NIL_P(c)) return;
}
- rb_compile_file(fname, f, line_start);
+ ruby_eval_tree = rb_compile_file(fname, f, line_start);
if (script && ruby__end__seen) {
rb_define_global_const("DATA", f);
}
@@ -1122,6 +1122,9 @@ ruby_set_argv(argc, argv)
}
}
+NODE *rb_parser_append_print _((NODE*));
+NODE *rb_parser_while_loop _((NODE*, int, int));
+
void
ruby_process_options(argc, argv)
int argc;
@@ -1141,9 +1144,9 @@ ruby_process_options(argc, argv)
exit(0);
}
if (do_print) {
- rb_parser_append_print();
+ ruby_eval_tree = rb_parser_append_print(ruby_eval_tree);
}
if (do_loop) {
- rb_parser_while_loop(do_line, do_split);
+ ruby_eval_tree = rb_parser_while_loop(ruby_eval_tree, do_line, do_split);
}
}