[project @ 2005-10-27 08:00:03 by simonmar]
authorsimonmar <unknown>
Thu, 27 Oct 2005 08:00:03 +0000 (08:00 +0000)
committersimonmar <unknown>
Thu, 27 Oct 2005 08:00:03 +0000 (08:00 +0000)
Fix getThreadLocalVar() on Win32 - thanks for Krasimir for finding the bug.

ghc/rts/win32/OSThreads.c

index e4cd76b..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;
 }