Use snwprintf instead of swprintf in rts/Linker.c.
[ghc.git] / rts / ThreadLabels.c
index aa620f0..981a5d9 100644 (file)
 #include "ThreadLabels.h"
 #include "RtsUtils.h"
 #include "Hash.h"
+#include "Trace.h"
 
 #include <stdlib.h>
 #include <string.h>
 
 #if defined(DEBUG)
-/* to the end */
+
 static HashTable * threadLabels = NULL;
 
 void
@@ -33,12 +34,12 @@ void
 freeThreadLabelTable(void)
 {
     if (threadLabels != NULL) {
-        freeHashTable(threadLabels, NULL);
+        freeHashTable(threadLabels, stgFree);
         threadLabels = NULL;
     }
 }
 
-void
+static void
 updateThreadLabel(StgWord key, void *data)
 {
   removeThreadLabel(key);
@@ -58,12 +59,17 @@ removeThreadLabel(StgWord key)
   if ((old = lookupHashTable(threadLabels,key))) {
     removeHashTable(threadLabels,key,old);
     stgFree(old);
-  }  
+  }
 }
 
+#endif /* DEBUG */
+
 void
-labelThread(StgPtr tso, char *label)
+labelThread(Capability *cap   STG_UNUSED,
+            StgTSO     *tso   STG_UNUSED,
+            char       *label STG_UNUSED)
 {
+#if defined(DEBUG)
   int len;
   void *buf;
 
@@ -72,7 +78,7 @@ labelThread(StgPtr tso, char *label)
   buf = stgMallocBytes(len * sizeof(char), "Schedule.c:labelThread()");
   strncpy(buf,label,len);
   /* Update will free the old memory for us */
-  updateThreadLabel(((StgTSO *)tso)->id,buf);
+  updateThreadLabel(tso->id,buf);
+#endif
+  traceThreadLabel(cap, tso, label);
 }
-
-#endif /* DEBUG */