I patched ghc6's Binary module to fit an Int in 4 bytes on 64 bit architectures, too. It's a runtime error if they try to put anything too large in there. If something uses Binary and hits this, it should be changed to use Int64. Haddock version 2.4.1-4 implements this change. This means that we can resume putting .haddock files in -doc packages. ghc6-doc -13 does this already, and I've uploaded new versions of what libraries I have so far packaged for 6.10.1 with that. I NMUed haskell-devscripts for this, too. I hope you didn't mind. Now I just wish I would have done this change in the first place, instead of moving .haddock files around. Note that this is about Binary, which is internal to GHC, not Data.Binary. --- ghc6-6.10.1+dfsg1.orig/compiler/utils/Binary.hs 2009-02-25 05:49:14.000000000 +0200 +++ ghc6-6.10.1+dfsg1/compiler/utils/Binary.hs 2009-02-25 07:25:39.000000000 +0200 @@ -404,10 +404,13 @@ x <- get bh return $! (fromIntegral (x :: Int32)) #elif SIZEOF_HSINT == 8 - put_ bh i = put_ bh (fromIntegral i :: Int64) + put_ bh i = if (i < (fromIntegral (minBound::Int32)) + || i > (fromIntegral (maxBound::Int32))) + then error "Binary.instance Binary Int: Int out of bounds for Int32" + else put_ bh (fromIntegral i :: Int32) get bh = do x <- get bh - return $! (fromIntegral (x :: Int64)) + return $! (fromIntegral (x :: Int32)) #else #error "unsupported sizeof(HsInt)" #endif
Attachment:
signature.asc
Description: Digital signature