ITS#9181 fix ldap_pvt_thread_mutex_t used before its definition

This commit is contained in:
Ryan Tandy 2020-04-16 10:46:18 -07:00 committed by Quanah Gibson-Mount
parent 7ce474050e
commit d5e133f459
2 changed files with 13 additions and 13 deletions

View File

@ -153,12 +153,12 @@ typedef HANDLE ldap_int_thread_cond_t;
typedef DWORD ldap_int_thread_key_t;
LDAP_F( int )
ldap_pvt_thread_mutex_init_first LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
ldap_int_mutex_firstcreate LDAP_P(( ldap_int_thread_mutex_t *mutex ));
#ifndef LDAP_INT_MUTEX_NULL
#define LDAP_INT_MUTEX_NULL ((HANDLE)0)
#define LDAP_INT_MUTEX_FIRSTCREATE(m) \
ldap_pvt_thread_mutex_init_first(&(m))
ldap_int_mutex_firstcreate(&(m))
#endif
LDAP_END_DECL

View File

@ -54,6 +54,17 @@ ldap_int_thread_destroy( void )
return 0;
}
int
ldap_int_mutex_firstcreate( ldap_int_thread_mutex_t *mutex )
{
if ( *mutex == NULL ) {
HANDLE p = CreateMutex( NULL, 0, NULL );
if ( InterlockedCompareExchangePointer((PVOID*)mutex, (PVOID)p, NULL) != NULL)
CloseHandle( p );
}
return 0;
}
int
ldap_pvt_thread_create( ldap_pvt_thread_t * thread,
int detach,
@ -161,17 +172,6 @@ ldap_pvt_thread_mutex_init( ldap_pvt_thread_mutex_t *mutex )
return ( 0 );
}
int
ldap_pvt_thread_mutex_init_first( ldap_pvt_thread_mutex_t *mutex )
{
if ( *mutex == NULL ) {
HANDLE p = CreateMutex( NULL, 0, NULL );
if ( InterlockedCompareExchangePointer((PVOID*)mutex, (PVOID)p, NULL) != NULL)
CloseHandle( p );
}
return ( 0 );
}
int
ldap_pvt_thread_mutex_recursive_init( ldap_pvt_thread_mutex_t *mutex )
{