revert my last change
[reactos.git] / reactos / lib / crt / misc / tls.c
index 41414f3..9fa6d03 100644 (file)
@@ -4,7 +4,7 @@
 #include <internal/rterror.h>
 
 
-static DWORD TlsIndex = TLS_OUT_OF_INDEXES;
+static unsigned long TlsIndex = (unsigned long)-1;
 
 
 static void InitThreadData(PTHREADDATA ThreadData)
@@ -19,38 +19,40 @@ 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);
@@ -82,8 +84,6 @@ PTHREADDATA GetThreadData(void)
             TlsSetValue(TlsIndex, (LPVOID)ThreadData);
 
             InitThreadData(ThreadData);
-
-             ThreadData->hThread = GetCurrentThread();
          }
        else
          {