* eval_error.c (error_handle): SystemExit and SignalException throws

TAG_RAISE but not TAG_FATAL.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2008-05-27 13:10:46 +00:00
Родитель bcb57421cb
Коммит 1cdd1249e8
2 изменённых файлов: 8 добавлений и 3 удалений

Просмотреть файл

@ -1,4 +1,7 @@
Tue May 27 21:53:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
Tue May 27 22:10:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval_error.c (error_handle): SystemExit and SignalException throws
TAG_RAISE but not TAG_FATAL.
* thread.c (rb_thread_execute_interrupts): delay interrupts during
raising exceptions. [ruby-dev:34855]

Просмотреть файл

@ -247,8 +247,7 @@ error_handle(int ex)
error_pos();
warn_printf(": unexpected throw\n");
break;
case TAG_RAISE:
case TAG_FATAL: {
case TAG_RAISE: {
VALUE errinfo = GET_THREAD()->errinfo;
if (rb_obj_is_kind_of(errinfo, rb_eSystemExit)) {
status = sysexit_status(errinfo);
@ -261,6 +260,9 @@ error_handle(int ex)
}
break;
}
case TAG_FATAL:
error_print();
break;
default:
rb_bug("Unknown longjmp status %d", ex);
break;