Piotr Caban : msvcrt: Drop read buffer in _flsbuf.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jan 21 15:16:21 CST 2015


Module: wine
Branch: master
Commit: ba0d1586ff53221e449f2ed885a059232dd4bea8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ba0d1586ff53221e449f2ed885a059232dd4bea8

Author: Piotr Caban <piotr at 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;
 




More information about the wine-cvs mailing list