fix non-threaded way
[ghc-hetmet.git] / ghc / rts / Task.c
index bc140c1..89db782 100644 (file)
@@ -175,10 +175,21 @@ void
 discardTask (Task *task)
 {
     ASSERT_LOCK_HELD(&sched_mutex);
-    task->stopped = rtsTrue;
-    task->cap = NULL;
-    task->next = task_free_list;
-    task_free_list = task;
+    if (!task->stopped) {
+       IF_DEBUG(scheduler,sched_belch("discarding task %p",
+#ifdef THREADED_RTS
+                                      (void *)task->id
+#else
+                                      (void *)task
+#endif
+                    ));
+       task->cap = NULL;
+       task->tso = NULL;
+       task->stopped = rtsTrue;
+       tasksRunning--;
+       task->next = task_free_list;
+       task_free_list = task;
+    }
 }
 
 void