summaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
Diffstat (limited to 'libraries')
-rw-r--r--libraries/base/GHC/ForeignPtr.hs6
1 files changed, 4 insertions, 2 deletions
diff --git a/libraries/base/GHC/ForeignPtr.hs b/libraries/base/GHC/ForeignPtr.hs
index 9ba6a2b017..27e83f453f 100644
--- a/libraries/base/GHC/ForeignPtr.hs
+++ b/libraries/base/GHC/ForeignPtr.hs
@@ -572,12 +572,14 @@ plusForeignPtr (ForeignPtr addr c) (I# d) = ForeignPtr (plusAddr# addr d) c
-- | Causes the finalizers associated with a foreign pointer to be run
-- immediately. The foreign pointer must not be used again after this
--- function is called.
+-- function is called. If the foreign pointer does not support finalizers,
+-- this is a no-op.
finalizeForeignPtr :: ForeignPtr a -> IO ()
finalizeForeignPtr (ForeignPtr _ c) = case c of
PlainForeignPtr ref -> foreignPtrFinalizer ref
MallocPtr _ ref -> foreignPtrFinalizer ref
- _ -> errorWithoutStackTrace "finalizeForeignPtr PlainPtr"
+ PlainPtr{} -> return ()
+ FinalPtr{} -> return ()
{- $commentary