summaryrefslogtreecommitdiff
path: root/libraries/base/Foreign
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-11-30 14:44:09 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-11-30 14:44:09 +0000
commit8c44eaba6f9224b16dc8556f0595e0ce71897cbb (patch)
tree4efc66c9a1d8fef7e4f65458c54cb190648196df /libraries/base/Foreign
parent0e0130b74f36a2571fed5123c853163ca01ad7ae (diff)
downloadhaskell-8c44eaba6f9224b16dc8556f0595e0ce71897cbb.tar.gz
fix the docs regarding finalizer guarantees
Diffstat (limited to 'libraries/base/Foreign')
-rw-r--r--libraries/base/Foreign/Concurrent.hs7
-rw-r--r--libraries/base/Foreign/ForeignPtr.hs11
2 files changed, 7 insertions, 11 deletions
diff --git a/libraries/base/Foreign/Concurrent.hs b/libraries/base/Foreign/Concurrent.hs
index a09c06f0c2..a914d9532f 100644
--- a/libraries/base/Foreign/Concurrent.hs
+++ b/libraries/base/Foreign/Concurrent.hs
@@ -39,10 +39,9 @@ newForeignPtr :: Ptr a -> IO () -> IO (ForeignPtr a)
-- ^Turns a plain memory reference into a foreign object by associating
-- a finalizer - given by the monadic operation - with the reference.
-- The finalizer will be executed after the last reference to the
--- foreign object is dropped. Note that there is no guarantee on how
--- soon the finalizer is executed after the last reference was dropped;
--- this depends on the details of the Haskell storage manager. The only
--- guarantee is that the finalizer runs before the program terminates.
+-- foreign object is dropped. There is no guarantee of promptness, and
+-- in fact there is no guarantee that the finalizer will eventually
+-- run at all.
newForeignPtr = GHC.ForeignPtr.newConcForeignPtr
addForeignPtrFinalizer :: ForeignPtr a -> IO () -> IO ()
diff --git a/libraries/base/Foreign/ForeignPtr.hs b/libraries/base/Foreign/ForeignPtr.hs
index 7fe096e9a8..6a7458ac6e 100644
--- a/libraries/base/Foreign/ForeignPtr.hs
+++ b/libraries/base/Foreign/ForeignPtr.hs
@@ -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