logo       

Re: [GHC] #454: hPutBuf doesn't respect LineBuffering: msg#00182

lang.haskell.glasgow.bugs

Subject: Re: [GHC] #454: hPutBuf doesn't respect LineBuffering

#454: hPutBuf doesn't respect LineBuffering
----------------------------+-----------------------------------------------
Reporter: simonmar | Owner: simonmar
Type: bug | Status: assigned
Priority: low | Milestone: 6.8
Component: libraries/base | Version: 6.4
Severity: normal | Resolution: None
Keywords: | Difficulty: Unknown
Testcase: | Architecture: Unknown
Os: Unknown |
----------------------------+-----------------------------------------------
Changes (by igloo):

* architecture: => Unknown
* difficulty: => Unknown
* milestone: => 6.8
* testcase: =>
* os: => Unknown

Old description:

> {{{
> 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.
>

> }}}

New description:

{{{
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.


}}}

--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/454>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@xxxxxxxxxxx
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise