You need to sign in or sign up before continuing.
hSetBinaryMode fails after some input has been read
For the following program (BadSeek.hs), type a couple characters of input and press return. With ghc-6.10.3, it works fine; with ghc-6.11 it throws an error.
module Main where
import System.IO
main = do
getChar >>= print
hSetBinaryMode stdin True
getChar >>= print
With ghc-6.10:
$ ./BadSeek
ab
'a'
'b'
With ghc-6.11:
$ ./BadSeek
ab
'a'
BadSeek: <stdin>: hSetBinaryMode: illegal operation (cannot flush the read buffer of a text-mode handle)
The error goes away if the first 'getChar' is commented out.
For libraries which are not yet using the Unicode I/O layer, having a way to temporarily set stdin to BinaryMode would be useful.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 6.11 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |