Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : ghc-7.2

http://hackage.haskell.org/trac/ghc/changeset/a64a6582565dfd921682aa4d7b00fb9a51e6e366

>---------------------------------------------------------------

commit a64a6582565dfd921682aa4d7b00fb9a51e6e366
Author: Ian Lynagh <[email protected]>
Date:   Fri Jul 22 22:57:19 2011 +0100

    Sync the typeable fingerprinting with GHC

>---------------------------------------------------------------

 GHC/Fingerprint.hs |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/GHC/Fingerprint.hs b/GHC/Fingerprint.hs
index 817afa8..01a4c26 100644
--- a/GHC/Fingerprint.hs
+++ b/GHC/Fingerprint.hs
@@ -26,8 +26,6 @@ import GHC.List
 import GHC.Real
 import Foreign
 import Foreign.C
-import GHC.IO.Encoding
-import GHC.Foreign
 
 import GHC.Fingerprint.Type
 
@@ -54,10 +52,18 @@ fingerprintData buf len = do
       c_MD5Final pdigest pctxt
       peek (castPtr pdigest :: Ptr Fingerprint)
 
+-- This is duplicated in compiler/utils/Fingerprint.hsc
 fingerprintString :: String -> Fingerprint
 fingerprintString str = unsafeDupablePerformIO $
-  GHC.Foreign.withCStringLen utf8 str $ \(p,len) ->
-     fingerprintData (castPtr p) len
+  withArrayLen word8s $ \len p ->
+     fingerprintData p len
+    where word8s = concatMap f str
+          f c = let w32 :: Word32
+                    w32 = fromIntegral (ord c)
+                in [fromIntegral (w32 `shiftR` 24),
+                    fromIntegral (w32 `shiftR` 16),
+                    fromIntegral (w32 `shiftR` 8),
+                    fromIntegral w32]
 
 data MD5Context
 



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to