Mercurial > sdl-ios-xcode
diff src/thread/win32/SDL_systhread.c @ 1225:09bc22169702
Windows should use _beginthreadex() instead of CreateThread(), to avoid a
memory leak on each joined thread.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Wed, 04 Jan 2006 21:01:49 +0000 |
parents | b8d311d90021 |
children | 86d0d01290ea |
line wrap: on
line diff
--- a/src/thread/win32/SDL_systhread.c Wed Jan 04 20:53:55 2006 +0000 +++ b/src/thread/win32/SDL_systhread.c Wed Jan 04 21:01:49 2006 +0000 @@ -30,13 +30,14 @@ #include <stdio.h> #include <stdlib.h> #include <windows.h> +#include <process.h> #include "SDL_error.h" #include "SDL_thread.h" #include "SDL_systhread.h" -static DWORD WINAPI RunThread(LPVOID data) +static unsigned __stdcall RunThread(void *data) { SDL_RunThread(data); return(0); @@ -44,9 +45,17 @@ int SDL_SYS_CreateThread(SDL_Thread *thread, void *args) { - DWORD threadnum; + unsigned threadid; - thread->handle = CreateThread(NULL, 0, RunThread, args, 0, &threadnum); + /* + * Avoid CreateThread: https://bugzilla.libsdl.org/show_bug.cgi?id=22 + * + * have to use _beginthreadex if we want the returned handle + * to be accessible after the thread exits + * threads created with _beginthread auto-close the handle + */ + thread->handle = (SYS_ThreadHandle) _beginthreadex(NULL, 0, RunThread, + args, 0, &threadid); if (thread->handle == NULL) { SDL_SetError("Not enough resources to create thread"); return(-1);