out of function since otherwise assertion is skipped if HANDLE_FORK)
* pthread_support.c (GC_unregister_my_thread_inner): Add assertion on
"tlfs" value before GC_destroy_thread_local() invocation.
* win32_threads.c (GC_unregister_my_thread, GC_thread_exit_proc):
Likewise.
* thread_local_alloc.c (GC_destroy_thread_local): Remove assertion on
"tlfs" value (since it was skipped if HANDLE_FORK because of the
function invocation from GC_remove_all_threads_but_me).
# endif
GC_ASSERT(!(me -> flags & FINISHED));
# if defined(THREAD_LOCAL_ALLOC)
+ GC_ASSERT(GC_getspecific(GC_thread_key) == &me->tlfs);
GC_destroy_thread_local(&(me->tlfs));
# endif
# if defined(GC_PTHREAD_EXIT_ATTRIBUTE) || !defined(GC_NO_PTHREAD_CANCEL)
{
/* We currently only do this from the thread itself or from */
/* the fork handler for a child process. */
-# ifndef HANDLE_FORK
- GC_ASSERT(GC_getspecific(GC_thread_key) == (void *)p);
-# endif
return_freelists(p -> ptrfree_freelists, GC_aobjfreelist);
return_freelists(p -> normal_freelists, GC_objfreelist);
# ifdef GC_GCJ_SUPPORT
GC_ASSERT(!KNOWN_FINISHED(me));
# endif
# if defined(THREAD_LOCAL_ALLOC)
+ GC_ASSERT(GC_getspecific(GC_thread_key) == &me->tlfs);
GC_destroy_thread_local(&(me->tlfs));
# endif
# ifdef GC_PTHREADS
LOCK();
GC_wait_for_gc_completion(FALSE);
# if defined(THREAD_LOCAL_ALLOC)
+ GC_ASSERT(GC_getspecific(GC_thread_key) == &me->tlfs);
GC_destroy_thread_local(&(me->tlfs));
# endif
if (me -> flags & DETACHED) {