Use a fixed size value when reading from Memory for ModuleInfo's
authortora@zonetora.co.uk <unknown>
Fri, 15 Jan 2010 10:21:41 +0000 (10:21 +0000)
committertora@zonetora.co.uk <unknown>
Fri, 15 Jan 2010 10:21:41 +0000 (10:21 +0000)
Trace/Hpc/Reflect.hsc

index d851827..98c94ad 100644 (file)
@@ -40,7 +40,7 @@ modInfo = unsafePerformIO $ do
       ptr <- hs_hpc_rootModule 
       moduleInfoList ptr
 
-data ModuleInfo = ModuleInfo String Int Hash (Ptr Word64) 
+data ModuleInfo = ModuleInfo String Word32 Hash (Ptr Word64) 
 
 moduleInfoList :: Ptr () -> IO [ModuleInfo]
 moduleInfoList ptr
@@ -57,7 +57,7 @@ moduleInfoList ptr
 
 clearTix :: IO ()
 clearTix = do
-      sequence_ [ pokeArray ptr $ take count $ repeat 0
+      sequence_ [ pokeArray ptr $ take (fromIntegral count) $ repeat 0
                | ModuleInfo _mod count _hash ptr <- modInfo
                ]
       return ()
@@ -65,8 +65,8 @@ clearTix = do
 
 examineTix :: IO Tix
 examineTix = do
-      mods <- sequence [ do tixs <- peekArray count ptr
-                           return $ TixModule mod' hash count
+      mods <- sequence [ do tixs <- peekArray (fromIntegral count) ptr
+                           return $ TixModule mod' hash (fromIntegral count)
                                   $ map fromIntegral tixs
                       | (ModuleInfo mod' count hash ptr) <- modInfo
                       ]
@@ -82,7 +82,7 @@ updateTix (Tix modTixes)
                | (ModuleInfo mod1 count1 hash1 ptr,
                   TixModule mod2 hash2 count2 tixs) <- zip modInfo modTixes
                , if mod1 /= mod2 
-               || count1 /= count2 
+               || (fromIntegral count1) /= count2 
                || hash1 /= hash2
                || length tixs /= count2
                  then error "updateTix failed"