diff options
Diffstat (limited to 'winsup/cygwin/cygthread.cc')
-rw-r--r-- | winsup/cygwin/cygthread.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc index 7ad860b45..1f071b847 100644 --- a/winsup/cygwin/cygthread.cc +++ b/winsup/cygwin/cygthread.cc @@ -11,7 +11,6 @@ details. */ #include <stdlib.h> #include "exceptions.h" #include "security.h" -#include "cygthread.h" #include "sync.h" #include "cygerrno.h" #include "sigproc.h" @@ -33,6 +32,7 @@ DWORD WINAPI cygthread::stub (VOID *arg) { cygthread *info = (cygthread *) arg; + _my_tls._ctinfo = info; if (info->arg == cygself) { if (info->ev) @@ -69,7 +69,8 @@ cygthread::stub (VOID *arg) info->func = NULL; // catch erroneous activation #endif info->__name = NULL; - SetEvent (info->ev); + if (info->inuse) + SetEvent (info->ev); } switch (WaitForSingleObject (info->thread_sync, INFINITE)) { @@ -88,6 +89,7 @@ DWORD WINAPI cygthread::simplestub (VOID *arg) { cygthread *info = (cygthread *) arg; + _my_tls._ctinfo = info; info->stack_ptr = &arg; info->ev = info->h; info->func (info->arg == cygself ? info : info->arg); |