X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fthreads.c;h=fd2fe7315d0efae144b189dd198bf5c70db6db73;hb=cd1fb047330603d08d2882b0ac812d194cbea0c6;hp=968bd091061ba5df7eb0828566271b652e0154d4;hpb=b495a722fe111a9de08b41a0146d060dbcca5981;p=mono.git diff --git a/mono/metadata/threads.c b/mono/metadata/threads.c index 968bd091061..fd2fe7315d0 100644 --- a/mono/metadata/threads.c +++ b/mono/metadata/threads.c @@ -3208,22 +3208,21 @@ remove_and_abort_threads (gpointer key, gpointer value, gpointer user) if (wait->num >= MONO_W32HANDLE_MAXIMUM_WAIT_OBJECTS) return FALSE; - /* The finalizer thread is not a background thread */ - if (!mono_native_thread_id_equals (thread_get_tid (thread), self) - && (thread->state & ThreadState_Background) != 0 - && (thread->flags & MONO_THREAD_FLAG_DONT_MANAGE) == 0 - ) { + if (mono_native_thread_id_equals (thread_get_tid (thread), self)) + return FALSE; + if (mono_gc_is_finalizer_internal_thread (thread)) + return FALSE; + + if ((thread->state & ThreadState_Background) && !(thread->flags & MONO_THREAD_FLAG_DONT_MANAGE)) { wait->handles[wait->num] = mono_threads_open_thread_handle (thread->handle); wait->threads[wait->num] = thread; wait->num++; THREAD_DEBUG (g_print ("%s: Aborting id: %"G_GSIZE_FORMAT"\n", __func__, (gsize)thread->tid)); mono_thread_internal_abort (thread); - return TRUE; } - return !mono_native_thread_id_equals (thread_get_tid (thread), self) - && !mono_gc_is_finalizer_internal_thread (thread); + return TRUE; } /**