From: Kurt Zeilenga Date: Sat, 17 Jan 2004 19:18:21 +0000 (+0000) Subject: NT ldap_pvt_thread_self fix from HEAD X-Git-Tag: OPENLDAP_REL_ENG_2_2_5~17 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=22d6873acd8ace3a37804ed1a55f565d58a11fe2;p=openldap NT ldap_pvt_thread_self fix from HEAD --- diff --git a/libraries/libldap_r/thr_nt.c b/libraries/libldap_r/thr_nt.c index a5b22cf966..a68d2608e4 100644 --- a/libraries/libldap_r/thr_nt.c +++ b/libraries/libldap_r/thr_nt.c @@ -43,13 +43,17 @@ ldap_pvt_thread_create( ldap_pvt_thread_t * thread, { unsigned tid; HANDLE thd; + int rc = -1; thd = (HANDLE) _beginthreadex(NULL, LDAP_PVT_THREAD_STACK_SIZE, (thrfunc_t *) start_routine, arg, 0, &tid); - *thread = (ldap_pvt_thread_t) thd; - - return thd == NULL ? -1 : 0; + if ( thd ) { + *thread = (ldap_pvt_thread_t) tid; + CloseHandle( thd ); + rc = 0; + } + return rc; } void @@ -62,7 +66,12 @@ int ldap_pvt_thread_join( ldap_pvt_thread_t thread, void **thread_return ) { DWORD status; - status = WaitForSingleObject( (HANDLE) thread, INFINITE ); + HANDLE thd; + HANDLE __stdcall OpenThread( int, int, int ); + + thd = OpenThread( SYNCHRONIZE, 0, thread ); + status = WaitForSingleObject( thd, INFINITE ); + CloseHandle( thd ); return status == WAIT_FAILED ? -1 : 0; } @@ -158,7 +167,7 @@ ldap_pvt_thread_mutex_trylock( ldap_pvt_thread_mutex_t *mp ) ldap_pvt_thread_t ldap_pvt_thread_self( void ) { - return GetCurrentThread(); + return GetCurrentThreadId(); } #endif