diff --git a/src/General/Cleanup.hs b/src/General/Cleanup.hs index bdb43a234..c1100ebf4 100755 --- a/src/General/Cleanup.hs +++ b/src/General/Cleanup.hs @@ -51,7 +51,7 @@ unprotect :: ReleaseKey -> IO () unprotect (ReleaseKey ref i) = atomicModifyIORef' ref $ \s -> (s{items = Map.delete i $ items s}, ()) release :: ReleaseKey -> IO () -release (ReleaseKey ref i) = mask_ $ do +release (ReleaseKey ref i) = uninterruptibleMask_ $ do undo <- atomicModifyIORef' ref $ \s -> (s{items = Map.delete i $ items s}, Map.lookup i $ items s) fromMaybe (return ()) undo diff --git a/src/Test/Cleanup.hs b/src/Test/Cleanup.hs index 6a7936d3d..c69a9ad2b 100644 --- a/src/Test/Cleanup.hs +++ b/src/Test/Cleanup.hs @@ -39,7 +39,7 @@ main = testSimple $ do do -- cleanup actions are masked https://github.com/snoyberg/conduit/issues/144 let checkMasked name = do ms <- getMaskingState - unless (ms == MaskedInterruptible) $ + unless (ms == MaskedUninterruptible) $ error $ show (name, ms) withCleanup $ \cleanup -> do register cleanup (checkMasked "release") >>= release