* 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:
parent
3d47e7b285
commit
98ed344ae9
@ -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>
|
Thu Nov 29 09:10:17 2012 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
* vm_backtrace.c (vm_backtrace_to_ary): support range argument
|
* vm_backtrace.c (vm_backtrace_to_ary): support range argument
|
||||||
|
6
eval.c
6
eval.c
@ -159,9 +159,6 @@ ruby_cleanup(volatile int ex)
|
|||||||
rb_thread_t *th = GET_THREAD();
|
rb_thread_t *th = GET_THREAD();
|
||||||
int nerr;
|
int nerr;
|
||||||
|
|
||||||
/* protect from thread.raise */
|
|
||||||
th->status = THREAD_KILLED;
|
|
||||||
|
|
||||||
rb_threadptr_interrupt(th);
|
rb_threadptr_interrupt(th);
|
||||||
rb_threadptr_check_signal(th);
|
rb_threadptr_check_signal(th);
|
||||||
PUSH_TAG();
|
PUSH_TAG();
|
||||||
@ -180,6 +177,9 @@ ruby_cleanup(volatile int ex)
|
|||||||
}
|
}
|
||||||
POP_TAG();
|
POP_TAG();
|
||||||
|
|
||||||
|
/* protect from Thread#raise */
|
||||||
|
th->status = THREAD_KILLED;
|
||||||
|
|
||||||
errs[0] = th->errinfo;
|
errs[0] = th->errinfo;
|
||||||
PUSH_TAG();
|
PUSH_TAG();
|
||||||
if ((state = EXEC_TAG()) == 0) {
|
if ((state = EXEC_TAG()) == 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user