Module: wine Branch: master Commit: ba0d1586ff53221e449f2ed885a059232dd4bea8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba0d1586ff53221e449f2ed885...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Jan 21 16:20:48 2015 +0100
msvcrt: Drop read buffer in _flsbuf.
---
dlls/msvcrt/file.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index ff1f5d6..8c59239 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -3781,12 +3781,24 @@ int CDECL MSVCRT__flsbuf(int c, MSVCRT_FILE* file) if(!(file->_flag & (MSVCRT__IONBF | MSVCRT__IOMYBUF | MSVCRT__USERBUF))) { msvcrt_alloc_buffer(file); } + if(!(file->_flag & MSVCRT__IOWRT)) { - if(file->_flag & MSVCRT__IORW) - file->_flag |= MSVCRT__IOWRT; - else + if(!(file->_flag & MSVCRT__IORW)) { + file->_flag |= MSVCRT__IOERR; + return MSVCRT_EOF; + } + file->_flag |= MSVCRT__IOWRT; + } + if(file->_flag & MSVCRT__IOREAD) { + if(!(file->_flag & MSVCRT__IOEOF)) { + file->_flag |= MSVCRT__IOERR; return MSVCRT_EOF; + } + file->_cnt = 0; + file->_ptr = file->_base; + file->_flag &= ~(MSVCRT__IOREAD | MSVCRT__IOEOF); } + if(file->_flag & (MSVCRT__IOMYBUF | MSVCRT__USERBUF)) { int res = 0;