From 2f0514345d325ecd20a88e3b0cb896ca9d23deae Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 19 Mar 2015 07:56:04 +0100 Subject: Reapply various changes conflicting with Maarten Lankhorst's gstreamer hack v5. --- dlls/ntdll/ntdll_misc.h | 1 + dlls/ntdll/thread.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h index e1be304..d5bc678 100644 --- a/dlls/ntdll/ntdll_misc.h +++ b/dlls/ntdll/ntdll_misc.h @@ -244,6 +244,7 @@ struct ntdll_thread_data WINE_VM86_TEB_INFO vm86; /* 1fc vm86 private data */ void *exit_frame; /* 204 exit frame pointer */ #endif + void *pthread_stack; /* 208/318 pthread stack */ struct list entry; BOOL detached; }; diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index 2011c1e2..9f824eb 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -467,6 +467,8 @@ static void exit_thread_common( int status ) static void *prev_teb; TEB *teb; #endif + shmlocal_t *shmlocal; + sigset_t sigset; if (status) /* send the exit code to the server (0 is already the default) */ { @@ -508,6 +510,11 @@ static void exit_thread_common( int status ) reap_thread(NtCurrentTeb()); #endif + sigemptyset( &sigset ); + sigaddset( &sigset, SIGQUIT ); + pthread_sigmask( SIG_BLOCK, &sigset, NULL ); + if (interlocked_xchg_add( &nb_threads, -1 ) <= 1) _exit( status ); + close( ntdll_get_thread_data()->wait_fd[0] ); close( ntdll_get_thread_data()->wait_fd[1] ); close( ntdll_get_thread_data()->reply_fd ); -- 2.6.4