Commit 16a5c304 by kelly.leahy

Fix bug in the way pthead_mutex_t was being destroyed in win32.

Win32 critical section objects (CRITICAL_SECTION) are not kernel objects.
Only kernel objects are destroyed by using CloseHandle.  Critical sections
are supposed to be deleted with the DeleteCriticalSection API
(http://msdn.microsoft.com/en-us/library/ms682552(VS.85).aspx).
parent cfba1377
...@@ -48,16 +48,15 @@ int pthread_join(pthread_t thread, void **value_ptr) ...@@ -48,16 +48,15 @@ int pthread_join(pthread_t thread, void **value_ptr)
int pthread_mutex_init(pthread_mutex_t *GIT_RESTRICT mutex, int pthread_mutex_init(pthread_mutex_t *GIT_RESTRICT mutex,
const pthread_mutexattr_t *GIT_RESTRICT GIT_UNUSED(mutexattr)) const pthread_mutexattr_t *GIT_RESTRICT GIT_UNUSED(mutexattr))
{ {
GIT_UNUSED_ARG(mutexattr); GIT_UNUSED_ARG(mutexattr);
InitializeCriticalSection(mutex); InitializeCriticalSection(mutex);
return 0; return 0;
} }
int pthread_mutex_destroy(pthread_mutex_t *mutex) int pthread_mutex_destroy(pthread_mutex_t *mutex)
{ {
int ret; DeleteCriticalSection(mutex);
ret = CloseHandle(mutex); return 0;
return -(!ret);
} }
int pthread_mutex_lock(pthread_mutex_t *mutex) int pthread_mutex_lock(pthread_mutex_t *mutex)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment