use uninterruptibleMask
Some recent changes to use mask missed that async exceptions can still be thrown inside it. The goal is to make sure a block of cleanup code runs entirely, w/o being interrupted by an async exception, so use uninterruptibleMask. Also, converted a few to bracket, which is nicer.
This commit is contained in:
parent
7013798df5
commit
24ff5e2b29
4 changed files with 7 additions and 7 deletions
|
@ -58,7 +58,7 @@ lock lockreq mode lockfile = do
|
|||
|
||||
-- Tries to take an lock, but does not block.
|
||||
tryLock :: LockRequest -> Maybe FileMode -> LockFile -> IO (Maybe LockHandle)
|
||||
tryLock lockreq mode lockfile = mask $ const $ do
|
||||
tryLock lockreq mode lockfile = uninterruptibleMask_ $ do
|
||||
l <- openLockFile lockreq mode lockfile
|
||||
v <- tryIO $ setLock l (lockreq, AbsoluteSeek, 0, 0)
|
||||
case v of
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue