Ticket #454 (closed bug: fixed)
hPutBuf doesn't respect LineBuffering
| Reported by: | simonmar | Owned by: | |
|---|---|---|---|
| Priority: | low | Milestone: | 6.12.1 |
| Component: | libraries/base | Version: | 6.4 |
| Keywords: | Cc: | rich.neswold@… | |
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | Difficulty: | Unknown | |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description (last modified by igloo) (diff)
On 15 April 2005 02:39, Ian Lynagh wrote: > If I run this program: > > -------------------------------------------------- > import System.Cmd (system) > import Foreign.C.String (castCharToCChar) > import Foreign.Marshal.Array (newArray) > import System.IO (hSetBinaryMode, hPutBuf, stdout, hSetBuffering, > BufferMode(..)) > > main = do hSetBinaryMode stdout True > hSetBuffering stdout LineBuffering > p <- newArray (map castCharToCChar "foo\n") > hPutBuf stdout p 4 > system "sleep 5" > putStr "bar\n" > -------------------------------------------------- > > compiled by GHC then it waits 5 seconds and then prints foo and bar > together. > > With hugs, foo is printed and then 5 seconds later bar is printed, as > I would expect. True, the implementation doesn't respect LineBuffering (though it does respect the other buffering modes, I believe). That's a bug.
Change History
Note: See
TracTickets for help on using
tickets.
