diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-10-01 01:52:32 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-10-01 01:52:32 +0000 |
commit | b9b34059a6f7eaa63aa0b7764db6eacb77531315 (patch) | |
tree | 7426057d206790c6d49bbd4b579589e22a3f852b /eval.c | |
parent | eb64f5de06ff378c3efe17504a1b57df9f4985f9 (diff) | |
download | ruby-b9b34059a6f7eaa63aa0b7764db6eacb77531315.tar.gz |
* eval.c (ruby_options), ruby.c (proc_options, process_options): not
call exit(2) directly. [ruby-dev:31912]
* eval.c (ruby_run_node): deal with direct exit code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -121,7 +121,8 @@ ruby_options(int argc, char **argv) } else { rb_clear_trace_func(); - exit(error_handle(state)); + state = error_handle(state); + tree = (void *)INT2FIX(state); } POP_TAG(); return tree; @@ -249,8 +250,13 @@ int ruby_run_node(void *n) { NODE *node = (NODE *)n; - if (!n) { - return EXIT_FAILURE; + + switch ((VALUE)n) { + case Qtrue: return EXIT_SUCCESS; + case Qfalse: return EXIT_FAILURE; + } + if (FIXNUM_P((VALUE)n)) { + return FIX2INT((VALUE)n); } Init_stack((void *)&n); return ruby_cleanup(ruby_exec_node(node, node->nd_file)); @@ -964,6 +970,7 @@ loop_i() for (;;) { rb_yield_0(0, 0); } + return Qnil; } /* |