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 |