[前][次][番号順一覧][スレッド一覧]

ruby-changes:25901

From: ko1 <ko1@a...>
Date: Thu, 29 Nov 2012 09:49:25 +0900 (JST)
Subject: [ruby-changes:25901] ko1:r37958 (trunk): * eval.c (ruby_cleanup): delay THREAD_KILLED timing.

ko1	2012-11-29 09:48:16 +0900 (Thu, 29 Nov 2012)

  New Revision: 37958

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37958

  Log:
    * eval.c (ruby_cleanup): delay THREAD_KILLED timing.
      It should be located just before rb_thread_terminate_all().

  Modified files:
    trunk/ChangeLog
    trunk/eval.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37957)
+++ ChangeLog	(revision 37958)
@@ -1,3 +1,8 @@
+Thu Nov 29 09:36:09 2012  Koichi Sasada  <ko1@a...>
+
+	* 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@a...>
 
 	* vm_backtrace.c (vm_backtrace_to_ary): support range argument
Index: eval.c
===================================================================
--- eval.c	(revision 37957)
+++ eval.c	(revision 37958)
@@ -159,9 +159,6 @@
     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 @@
     }
     POP_TAG();
 
+    /* protect from Thread#raise */
+    th->status = THREAD_KILLED;
+
     errs[0] = th->errinfo;
     PUSH_TAG();
     if ((state = EXEC_TAG()) == 0) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]