summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libraries/base/GHC/IO/Handle/Internals.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/libraries/base/GHC/IO/Handle/Internals.hs b/libraries/base/GHC/IO/Handle/Internals.hs
index f0a2cdac4b..120ae0ea66 100644
--- a/libraries/base/GHC/IO/Handle/Internals.hs
+++ b/libraries/base/GHC/IO/Handle/Internals.hs
@@ -596,11 +596,14 @@ flushCharReadBuffer Handle__{..} = do
(bbuf1,cbuf1) <- (streamEncode decoder) bbuf0
cbuf0{ bufL=0, bufR=0, bufSize = bufL cbuf0 }
- let bbuf2 = bbuf1 -- {bufOffset = bufOffset bbuf1 - fromIntegral (bufL bbuf1)}
- debugIO ("finished, bbuf=" ++ summaryBuffer bbuf2 ++
- " cbuf=" ++ summaryBuffer cbuf1)
-
- writeIORef haByteBuffer bbuf2
+ -- We should not need to update the offset here. The bytebuffer contains the
+ -- offset for the next read after it's used up. But this function only flushes
+ -- the char buffer.
+ -- let bbuf2 = bbuf1 -- {bufOffset = bufOffset bbuf1 - fromIntegral (bufL bbuf1)}
+ -- debugIO ("finished, bbuf=" ++ summaryBuffer bbuf2 ++
+ -- " cbuf=" ++ summaryBuffer cbuf1)
+
+ writeIORef haByteBuffer bbuf1
-- When flushing the byte read buffer, we seek backwards by the number