diff --git a/ChangeLog b/ChangeLog index 9f3801b51e..cf78804c5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Tue Dec 21 00:59:40 2010 KOSAKI Motohiro + + * thread.c (thread_cleanup_func): Moved interrupted_lock + destroying code from native_thread_destroy() to + thread_cleanup_func() because it's platform independent logic. + + * thread_win32.c (native_thread_destroy): ditto. + * thread_pthread.c (native_thread_destroy): ditto. + Tue Dec 21 00:46:20 2010 KOSAKI Motohiro * thread.c (thread_cleanup_func): Don't touch native threading diff --git a/thread.c b/thread.c index c46a5bc445..dbe837fcce 100644 --- a/thread.c +++ b/thread.c @@ -406,6 +406,7 @@ thread_cleanup_func(void *th_ptr, int atfork) if (atfork) return; + native_mutex_destroy(&th->interrupt_lock); native_thread_destroy(th); } diff --git a/thread_pthread.c b/thread_pthread.c index dcd1a724bf..aabf36de42 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -339,7 +339,6 @@ native_thread_init(rb_thread_t *th) static void native_thread_destroy(rb_thread_t *th) { - pthread_mutex_destroy(&th->interrupt_lock); pthread_cond_destroy(&th->native_thread_data.gvl_cond); pthread_cond_destroy(&th->native_thread_data.sleep_cond); } diff --git a/thread_win32.c b/thread_win32.c index 26516e4cf3..62ba5bbab5 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -511,7 +511,6 @@ static void native_thread_destroy(rb_thread_t *th) { HANDLE intr = InterlockedExchangePointer(&th->native_thread_data.interrupt_event, 0); - native_mutex_destroy(&th->interrupt_lock); thread_debug("close handle - intr: %p, thid: %p\n", intr, th->thread_id); w32_close_handle(intr); }