aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2017-05-12 14:36:08 -0400
committerAlex Biehl <alexbiehl@gmail.com>2017-05-12 20:36:08 +0200
commitb7d7b7acd42cbe424afde3c8a5a59a0706445343 (patch)
tree77853349215ae8b70abbcb1d484859953840203d
parenta0c4790e15a2d3fab8d830eee8fcd639fe6d39c9 (diff)
Haddock: Fix broken lazy IO in prologue reading (#615)
We previously used withFile in conjunction with hGetContents. The list returned by the latter wasn't completely forced by the time we left the withFile block, meaning that we would try to read from a closed handle.
-rw-r--r--haddock-api/src/Haddock.hs5
1 files changed, 3 insertions, 2 deletions
diff --git a/haddock-api/src/Haddock.hs b/haddock-api/src/Haddock.hs
index 6af0874a..637ccf2b 100644
--- a/haddock-api/src/Haddock.hs
+++ b/haddock-api/src/Haddock.hs
@@ -540,9 +540,10 @@ getPrologue :: DynFlags -> [Flag] -> IO (Maybe (MDoc RdrName))
getPrologue dflags flags =
case [filename | Flag_Prologue filename <- flags ] of
[] -> return Nothing
- [filename] -> withFile filename ReadMode $ \h -> do
+ [filename] -> do
+ h <- openFile filename ReadMode
hSetEncoding h utf8
- str <- hGetContents h
+ str <- hGetContents h -- semi-closes the handle
return . Just $! parseParas dflags str
_ -> throwE "multiple -p/--prologue options"