Make the running_finalizers flag task-local
[ghc-hetmet.git] / rts / RtsAPI.c
index 6e66218..2479f20 100644 (file)
@@ -538,7 +538,9 @@ rts_lock (void)
     Capability *cap;
     Task *task;
 
-    if (running_finalizers) {
+    task = newBoundTask();
+
+    if (task->running_finalizers) {
         errorBelch("error: a C finalizer called back into Haskell.\n"
                    "   This was previously allowed, but is disallowed in GHC 6.10.2 and later.\n"
                    "   To create finalizers that may call back into Haskell, use\n"
@@ -546,8 +548,6 @@ rts_lock (void)
         stg_exit(EXIT_FAILURE);
     }
 
-    task = newBoundTask();
-
     cap = NULL;
     waitForReturnCapability(&cap, task);
     return (Capability *)cap;