[project @ 2005-10-27 08:00:03 by simonmar]
[ghc-hetmet.git] / ghc / rts / win32 / OSThreads.c
index 63100e4..5559765 100644 (file)
@@ -137,9 +137,13 @@ getThreadLocalVar (ThreadLocalKey *key)
 {
     void *r;
     r = TlsGetValue(*key);
-    if (r == NULL) {
+#ifdef DEBUG
+    // r is allowed to be NULL - it can mean that either there was an
+    // error or the stored value is in fact NULL.
+    if (GetLastError() != NO_ERROR) {
        barf("getThreadLocalVar: key not found");
     }
+#endif
     return r;
 }
 
@@ -159,7 +163,7 @@ forkOS_createThreadWrapper ( void * entry )
 {
     Capability *cap;
     cap = rts_lock();
-    rts_evalStableIO(cap, (HsStablePtr) entry, NULL);
+    cap = rts_evalStableIO(cap, (HsStablePtr) entry, NULL);
     rts_unlock(cap);
     return 0;
 }
@@ -176,8 +180,6 @@ forkOS_createThread ( HsStablePtr entry )
                           (unsigned*)&pId) == 0);
 }
 
-#endif /* defined(HAVE_PTHREAD_H) */
-
 #else /* !defined(THREADED_RTS) */
 
 int