[project @ 2004-01-02 19:03:14 by panne]
[ghc-base.git] / Foreign / Marshal / Alloc.hs
index 65294ce..fb9f8dd 100644 (file)
@@ -30,22 +30,28 @@ module Foreign.Marshal.Alloc (
 
 import Data.Maybe
 import Foreign.Ptr             ( Ptr, nullPtr, FunPtr )
-import Foreign.ForeignPtr      ( FinalizerPtr )
 import Foreign.C.Types         ( CSize )
 import Foreign.Storable        ( Storable(sizeOf) )
 
 #ifdef __GLASGOW_HASKELL__
+import Foreign.ForeignPtr      ( FinalizerPtr )
 import GHC.IOBase
 import GHC.Real
 import GHC.Ptr
 import GHC.Err
 import GHC.Base
+import GHC.Num
 #elif defined(__NHC__)
+import NHC.FFI                 ( FinalizerPtr, CInt(..) )
 import IO                      ( bracket )
 #else
 import Control.Exception       ( bracket )
 #endif
 
+#ifdef __HUGS__
+import Hugs.ForeignPtr         ( FinalizerPtr )
+#endif
+
 
 -- exported functions
 -- ------------------
@@ -115,6 +121,7 @@ realloc  = doRealloc undefined
 -- C\'s @realloc()@).
 --
 reallocBytes          :: Ptr a -> Int -> IO (Ptr a)
+reallocBytes ptr 0     = do free ptr; return nullPtr
 reallocBytes ptr size  = 
   failWhenNULL "realloc" (_realloc ptr (fromIntegral size))