summaryrefslogtreecommitdiff
path: root/libraries/base/Control/Concurrent
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/base/Control/Concurrent')
-rw-r--r--libraries/base/Control/Concurrent/MVar.hs7
1 files changed, 5 insertions, 2 deletions
diff --git a/libraries/base/Control/Concurrent/MVar.hs b/libraries/base/Control/Concurrent/MVar.hs
index 45c05fdc9b..5ffac11077 100644
--- a/libraries/base/Control/Concurrent/MVar.hs
+++ b/libraries/base/Control/Concurrent/MVar.hs
@@ -270,5 +270,8 @@ addMVarFinalizer = GHC.MVar.addMVarFinalizer
--
-- @since 4.6.0.0
mkWeakMVar :: MVar a -> IO () -> IO (Weak (MVar a))
-mkWeakMVar m@(MVar m#) f = IO $ \s ->
- case mkWeak# m# m f s of (# s1, w #) -> (# s1, Weak w #)
+mkWeakMVar m@(MVar m#) (IO f) = IO $ \s ->
+ case mkWeak# m# m finalizer s of (# s1, w #) -> (# s1, Weak w #)
+ where
+ finalizer :: State# RealWorld -> State# RealWorld
+ finalizer s' = case f s' of (# s'', () #) -> s''