id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,os,architecture,failure,difficulty,testcase,blockedby,blocking,related
3534,hSetBinaryMode fails after some input has been read,judah,simonmar,"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.",bug,closed,high,6.12.1,libraries/base,6.11,fixed,,,Unknown/Multiple,Unknown/Multiple,,Unknown,,,,
