diff options
-rw-r--r-- | Backend/Hash.hs | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/Backend/Hash.hs b/Backend/Hash.hs index c190f5477..2835b5637 100644 --- a/Backend/Hash.hs +++ b/Backend/Hash.hs @@ -171,11 +171,9 @@ hashFile hash file filesize = go hash go (SkeinHash hashsize) = use (skeinHasher hashsize) use hasher = liftIO $ do - hdl <- openBinaryFile file ReadMode - b <- L.hGetContents hdl - let !hsh = hasher b - hClose hdl - return hsh + h <- hasher <$> L.readFile file + -- Force full evaluation so file is read and closed. + return (length h `seq` h) usehasher hashsize = case shaHasher hashsize filesize of Left sha -> use sha |