BufferedIO: fix bug in writeBufNonBlocking introduced by commit 7d39e100
authorJoey Adams <joeyadams3.14159@gmail.com>
Mon, 24 Dec 2012 17:44:22 +0000 (12:44 -0500)
committerJoey Adams <joeyadams3.14159@gmail.com>
Fri, 28 Dec 2012 08:13:40 +0000 (03:13 -0500)
bufferAdjustL does nothing but update bufL, and set bufL = bufR = 0
when bufL == bufR.  It ignores the old bufL.

writeBufNonBlocking is currently unused.  It is only used to implement
flushWriteBuffer0, which is never called by base
(hPutBufNonBlocking uses a blocking flush).

GHC/IO/BufferedIO.hs

index ef78d90..b715c61 100644 (file)
@@ -123,5 +123,5 @@ writeBufNonBlocking dev bbuf = do
   let bytes = bufferElems bbuf
   res <- withBuffer bbuf $ \ptr ->
             IODevice.writeNonBlocking dev (ptr `plusPtr` bufL bbuf) bytes
-  return (res, bufferAdjustL res bbuf)
+  return (res, bufferAdjustL (bufL bbuf + res) bbuf)