ruby-changes:18499
From: akr <ko1@a...>
Date: Wed, 12 Jan 2011 19:40:37 +0900 (JST)
Subject: [ruby-changes:18499] Ruby:r30522 (trunk): * vm.c (thread_free): reset ruby_current_thread if it points the
akr 2011-01-12 19:35:36 +0900 (Wed, 12 Jan 2011) New Revision: 30522 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30522 Log: * vm.c (thread_free): reset ruby_current_thread if it points the thread to free. * gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if there is no current thread. [ruby-dev:43000] Modified files: trunk/ChangeLog trunk/gc.c trunk/vm.c Index: ChangeLog =================================================================== --- ChangeLog (revision 30521) +++ ChangeLog (revision 30522) @@ -1,3 +1,11 @@ +Wed Jan 12 19:28:23 2011 Tanaka Akira <akr@f...> + + * vm.c (thread_free): reset ruby_current_thread if it points the + thread to free. + * gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if + there is no current thread. + [ruby-dev:43000] + Wed Jan 12 19:09:29 2011 Tanaka Akira <akr@f...> * enum.c (sort_by_i): reenter check more strictly. Index: gc.c =================================================================== --- gc.c (revision 30521) +++ gc.c (revision 30522) @@ -1958,7 +1958,10 @@ objspace->heap.final_num += final_num; if (deferred_final_list) { - RUBY_VM_SET_FINALIZER_INTERRUPT(GET_THREAD()); + rb_thread_t *th = GET_THREAD(); + if (th) { + RUBY_VM_SET_FINALIZER_INTERRUPT(th); + } } } Index: vm.c =================================================================== --- vm.c (revision 30521) +++ vm.c (revision 30522) @@ -1730,6 +1730,8 @@ #endif ruby_xfree(ptr); } + if (ruby_current_thread == th) + ruby_current_thread = NULL; } RUBY_FREE_LEAVE("thread"); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/