@@ -48,22 +48,14 @@ lockFile winHandle lock = do
4848
4949 allocaBytes sizeof_OVERLAPPED $ \op -> do
5050 zeroMemory op $ fromIntegral sizeof_OVERLAPPED
51− res <- c_lockFileEx winHandle (exFlag .|. blockFlag) 0 1 0 op
52− if res then
53− pure ()
54− else
55− error "failed to wait for database lock"
51+ failIfFalse_ "LockFileEx" $ c_lockFileEx winHandle (exFlag .|. blockFlag) 0 1 0 op
5652
5753unlockFile :: HANDLE -> IO ()
5854unlockFile winHandle = do
5955 let sizeof_OVERLAPPED = 32
6056 allocaBytes sizeof_OVERLAPPED $ \op -> do
6157 zeroMemory op $ fromIntegral sizeof_OVERLAPPED
62− res <- c_unlockFileEx winHandle 0 1 0 op
63− if res then
64− pure ()
65− else
66− error ("failed to unlock database lock: " ++ show res)
58+ failIfFalse_ "UnlockFileEx" $ c_unlockFileEx winHandle 0 1 0 op
6759
6860#else
6961--all of this complicated nonsense is fixed if we switch to GHC 8.2 which includes native flock support on handles