@@ -44,7 +44,8 @@ hGetLineWith f h = wantReadableHandle_ "hGetLine" h go
4444 go hh@Handle__{..} = readIORef haCharBuffer >>= fmap f . hGetLineLoop hh []
4545
4646hGetLineLoop :: Handle__ -> [Text] -> CharBuffer -> IO [Text]
47−hGetLineLoop hh@Handle__{..} ts buf@Buffer{ bufL=r0, bufR=w, bufRaw=raw0 } = do
47+hGetLineLoop hh@Handle__{..} = go where
48+ go ts buf@Buffer{ bufL=r0, bufR=w, bufRaw=raw0 } = do
4849 let findEOL raw r | r == w = return (False, w)
4950 | otherwise = do
5051 (c,r') <- readCharBuf raw r
@@ -76,7 +77,7 @@ hGetLineLoop hh@Handle__{..} ts buf@Buffer{ bufL=r0, bufR=w, bufRaw=raw0 } = do
7677 if null str
7778 then ioe_EOF
7879 else return str
79− Just new_buf -> hGetLineLoop hh (t:ts) new_buf
80+ Just new_buf -> go (t:ts) new_buf
8081
8182-- This function is lifted almost verbatim from GHC.IO.Handle.Text.
8283maybeFillReadBuffer :: Handle__ -> CharBuffer -> IO (Maybe CharBuffer)