[Python-Dev] C standard io library, flush/read/write problem (original) (raw)
Emerson Clarke emerson.clarke at gmail.com
Wed Jan 10 06:20:38 CET 2007
- Previous message: [Python-Dev] [Python-3000] Warning for 2.6 and greater
- Next message: [Python-Dev] C standard io library, flush/read/write problem
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
The other night i was watching a google techtalk about python 3000 and Guido mentioned some problems with the C standard io library.
In particular he highlighted an issue with switching between reading and writing without flushing and the fact that it caused serious errors. Not that i dont think its a good idea to write a new io library, but I wondered if it was the same problem ive encounted.
It only happens on windows that i know off, but the fix is simple...
Assuming you have a hanlde to the file called "Handle" and a Flush() method, the following logic for read and write will allow you to detect and prevent the problem.
Add this to the Read() method before reading takes place:
if ( Handle && (Handle->_flag & _IORW) && (Handle->_flag & (_IOREAD | _IOWRT)) == _IOWRT ) { Flush(); Handle->_flag |= _IOREAD; }
Add this to the Write() method before writing takes place:
if ( Handle && (Handle->_flag & _IORW) && (Handle->_flag & (_IOREAD | _IOWRT)) == _IOREAD ) { Flush(); Handle->_flag |= _IOWRT; }
Emerson
- Previous message: [Python-Dev] [Python-3000] Warning for 2.6 and greater
- Next message: [Python-Dev] C standard io library, flush/read/write problem
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]