#include <internal/rterror.h>
-static DWORD TlsIndex = TLS_OUT_OF_INDEXES;
+static unsigned long TlsIndex = (unsigned long)-1;
static void InitThreadData(PTHREADDATA ThreadData)
}
-int SetThreadData(PTHREADDATA ThreadData)
+int CreateThreadData(void)
{
- if(TlsIndex == TLS_OUT_OF_INDEXES ||
- !TlsSetValue(TlsIndex, ThreadData))
+ PTHREADDATA ThreadData;
+
+ TlsIndex = TlsAlloc();
+ if (TlsIndex == (unsigned long)-1)
return FALSE;
- InitThreadData(ThreadData);
+ ThreadData = (PTHREADDATA)calloc(1, sizeof(THREADDATA));
+ if (ThreadData == NULL)
+ return FALSE;
- return TRUE;
-}
+ if(!TlsSetValue(TlsIndex, (LPVOID)ThreadData))
+ return FALSE;
+ InitThreadData(ThreadData);
-int CreateThreadData(void)
-{
- TlsIndex = TlsAlloc();
- return (TlsIndex != TLS_OUT_OF_INDEXES);
+ return TRUE;
}
void DestroyThreadData(void)
{
- if (TlsIndex != TLS_OUT_OF_INDEXES)
+ if (TlsIndex != (unsigned long)-1)
{
TlsFree(TlsIndex);
- TlsIndex = TLS_OUT_OF_INDEXES;
+ TlsIndex = (unsigned long)-1;
}
}
void FreeThreadData(PTHREADDATA ThreadData)
{
- if (TlsIndex != TLS_OUT_OF_INDEXES)
+ if (TlsIndex != (unsigned long)-1)
{
if (ThreadData == NULL)
ThreadData = TlsGetValue(TlsIndex);
TlsSetValue(TlsIndex, (LPVOID)ThreadData);
InitThreadData(ThreadData);
-
- ThreadData->hThread = GetCurrentThread();
}
else
{