X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=Foreign%2FForeignPtr.hs;h=6a7458ac6ef51bb72edd79586e0e4c252422b0d0;hb=7dfe4a22aa6a2c598b1496c661c7d532aaafa94f;hp=59fcf82d776d2dfa1b89221c8111beb85e2f9572;hpb=f5d5a1db650290902fbec064df087d2a6c2738dd;p=ghc-base.git diff --git a/Foreign/ForeignPtr.hs b/Foreign/ForeignPtr.hs index 59fcf82..6a7458a 100644 --- a/Foreign/ForeignPtr.hs +++ b/Foreign/ForeignPtr.hs @@ -78,7 +78,7 @@ import Foreign.Storable ( Storable(sizeOf) ) #ifdef __GLASGOW_HASKELL__ import GHC.Base -import GHC.IOBase +-- import GHC.IO import GHC.Num import GHC.Err ( undefined ) import GHC.ForeignPtr @@ -101,13 +101,10 @@ instance Show (ForeignPtr a) where #ifndef __NHC__ newForeignPtr :: FinalizerPtr a -> Ptr a -> IO (ForeignPtr a) -- ^Turns a plain memory reference into a foreign pointer, and --- associates a finaliser with the reference. The finaliser will be executed --- after the last reference to the foreign object is dropped. Note that there --- is no guarantee on how soon the finaliser is executed after the last --- reference was dropped; this depends on the details of the Haskell storage --- manager. Indeed, there is no guarantee that the finalizer is executed at --- all; a program may exit with finalizers outstanding. (This is true --- of GHC, other implementations may give stronger guarantees). +-- associates a finaliser with the reference. The finaliser will be +-- executed after the last reference to the foreign object is dropped. +-- There is no guarantee of promptness, however the finalizer will be +-- executed before the program exits. newForeignPtr finalizer p = do fObj <- newForeignPtr_ p addForeignPtrFinalizer finalizer fObj