diff --git a/ChangeLog b/ChangeLog index 36b0534f19..cea517f3f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Mon Apr 8 04:50:51 2002 Nobuyoshi Nakada + + * eval.c (error_handle): default to 1 unless status is set. + + * eval.c (ruby_options): guard error_handle() with PROT_NONE. + + * eval.c (ruby_stop): ditto. + Fri Apr 5 05:07:28 2002 Takaaki Tateishi * ext/dl: Add dl/struct.rb. diff --git a/eval.c b/eval.c index 8c3f12fcfd..28064c8625 100644 --- a/eval.c +++ b/eval.c @@ -1129,7 +1129,7 @@ error_handle(ex) case TAG_FATAL: if (rb_obj_is_kind_of(ruby_errinfo, rb_eSystemExit)) { VALUE st = rb_iv_get(ruby_errinfo, "status"); - ex = NUM2INT(st); + ex = NIL_P(st) ? 1 : NUM2INT(st); } else { error_print(); @@ -1154,12 +1154,12 @@ ruby_options(argc, argv) if ((state = EXEC_TAG()) == 0) { ruby_process_options(argc, argv); } - POP_TAG(); if (state) { trace_func = 0; tracing = 0; exit(error_handle(state)); } + POP_TAG(); } void rb_exec_end_proc _((void)); @@ -1194,11 +1194,11 @@ ruby_stop(ex) ex = state; } POP_ITER(); - POP_TAG(); trace_func = 0; tracing = 0; ex = error_handle(ex); + POP_TAG(); ruby_finalize(); exit(ex); }