1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

Bug #26564: Windows implementation of pthread_join crashes

MySQL uses _beginthread()/_endthread() instead of 
_beginthreadex()/_endthreadex() to create/end its threads
on Windows.
According to MSDN  _endthread() does close the thread handle.
So there's no need the handle to be closed explicitly.
Besides : WaitForSingleObject(, INFINITE) != WAIT_OBJECT_0) is
true for all practical cases as the other two possible return 
codes (according to MSDN) cannot happen in that case the 
CloseHandle() was actually a dead code.
Fixed by removing the CloseHandle() call. No test case added
because it's not possible to test for absence of dead code. 


include/my_pthread.h:
  Bug #26564: Don't call CloseHandle since we use 
  beginthread/endthread instead of beginthreadex/endthreadex.
This commit is contained in:
unknown
2007-06-25 19:21:18 +03:00
parent a0fa27cf35
commit 76295d4bbe

View File

@@ -181,8 +181,7 @@ void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/
#define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B)) #define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B))
#define pthread_kill(A,B) pthread_dummy(0) #define pthread_kill(A,B) pthread_dummy(0)
#define pthread_join(A,B) \ #define pthread_join(A,B) (WaitForSingleObject((A), INFINITE) != WAIT_OBJECT_0)
((WaitForSingleObject((A), INFINITE) != WAIT_OBJECT_0) || !CloseHandle(A))
/* Dummy defines for easier code */ /* Dummy defines for easier code */
#define pthread_attr_setdetachstate(A,B) pthread_dummy(0) #define pthread_attr_setdetachstate(A,B) pthread_dummy(0)