* eval.c (ruby_cleanup): delay THREAD_KILLED timing.

It should be located just before rb_thread_terminate_all().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2012-11-29 00:48:16 +00:00
Родитель 3d47e7b285
Коммит 98ed344ae9
2 изменённых файлов: 8 добавлений и 3 удалений

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

@ -1,3 +1,8 @@
Thu Nov 29 09:36:09 2012 Koichi Sasada <ko1@atdot.net>
* eval.c (ruby_cleanup): delay THREAD_KILLED timing.
It should be located just before rb_thread_terminate_all().
Thu Nov 29 09:10:17 2012 Koichi Sasada <ko1@atdot.net>
* vm_backtrace.c (vm_backtrace_to_ary): support range argument

6
eval.c
Просмотреть файл

@ -159,9 +159,6 @@ ruby_cleanup(volatile int ex)
rb_thread_t *th = GET_THREAD();
int nerr;
/* protect from thread.raise */
th->status = THREAD_KILLED;
rb_threadptr_interrupt(th);
rb_threadptr_check_signal(th);
PUSH_TAG();
@ -180,6 +177,9 @@ ruby_cleanup(volatile int ex)
}
POP_TAG();
/* protect from Thread#raise */
th->status = THREAD_KILLED;
errs[0] = th->errinfo;
PUSH_TAG();
if ((state = EXEC_TAG()) == 0) {