ruby-changes:17644
From: nobu <ko1@a...>
Date: Sun, 31 Oct 2010 22:26:06 +0900 (JST)
Subject: [ruby-changes:17644] Ruby:r29652 (trunk): * eval.c (ruby_cleanup): free current VM and its objspace even
nobu 2010-10-31 22:24:19 +0900 (Sun, 31 Oct 2010) New Revision: 29652 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29652 Log: * eval.c (ruby_cleanup): free current VM and its objspace even when exiting by SystemExit. Modified files: trunk/ChangeLog trunk/eval.c Index: ChangeLog =================================================================== --- ChangeLog (revision 29651) +++ ChangeLog (revision 29652) @@ -1,3 +1,8 @@ +Sun Oct 31 22:24:14 2010 Nobuyoshi Nakada <nobu@r...> + + * eval.c (ruby_cleanup): free current VM and its objspace even + when exiting by SystemExit. + Sun Oct 31 22:10:56 2010 Nobuyoshi Nakada <nobu@r...> * compile.c (new_child_iseq): adjust argument types. Index: eval.c =================================================================== --- eval.c (revision 29651) +++ eval.c (revision 29652) @@ -162,6 +162,17 @@ POP_TAG(); rb_thread_stop_timer_thread(); +#if EXIT_SUCCESS != 0 || EXIT_FAILURE != 1 + switch (ex) { +#if EXIT_SUCCESS != 0 + case 0: ex = EXIT_SUCCESS; break; +#endif +#if EXIT_FAILURE != 1 + case 1: ex = EXIT_FAILURE; break; +#endif + } +#endif + state = 0; for (nerr = 0; nerr < numberof(errs); ++nerr) { VALUE err = errs[nerr]; @@ -172,31 +183,21 @@ if (TYPE(err) == T_NODE) continue; if (rb_obj_is_kind_of(err, rb_eSystemExit)) { - return sysexit_status(err); + ex = sysexit_status(err); + break; } else if (rb_obj_is_kind_of(err, rb_eSignal)) { VALUE sig = rb_iv_get(err, "signo"); state = NUM2INT(sig); break; } - else if (ex == 0) { - ex = 1; + else if (ex == EXIT_SUCCESS) { + ex = EXIT_FAILURE; } } ruby_vm_destruct(GET_VM()); if (state) ruby_default_signal(state); -#if EXIT_SUCCESS != 0 || EXIT_FAILURE != 1 - switch (ex) { -#if EXIT_SUCCESS != 0 - case 0: return EXIT_SUCCESS; -#endif -#if EXIT_FAILURE != 1 - case 1: return EXIT_FAILURE; -#endif - } -#endif - return ex; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/