Module: wine Branch: master Commit: c6a160691afc0c7123d505c9baf0382b56a4fb45 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c6a160691afc0c7123d505c9ba...
Author: Grazvydas Ignotas notasas@gmail.com Date: Wed Jun 18 13:55:52 2014 +0300
msvcrt: Clear _cnt on buffer flush.
---
dlls/msvcrt/file.c | 15 ++++++++------- dlls/msvcrt/tests/file.c | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index c1d9d6e..5a9edbe 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -595,7 +595,7 @@ static int msvcrt_flush_buffer(MSVCRT_FILE* file) return MSVCRT_EOF; } file->_ptr=file->_base; - file->_cnt=file->_bufsiz; + file->_cnt=0; } return 0; } @@ -3659,14 +3659,15 @@ int CDECL MSVCRT__flsbuf(int c, MSVCRT_FILE* file) if(file->_bufsiz) { int res = 0;
- if(file->_cnt <= 0) + if(file->_cnt <= 0) { res = msvcrt_flush_buffer(file); - if(!res) { - *file->_ptr++ = c; - file->_cnt--; + if(res) + return res; + file->_cnt=file->_bufsiz; } - - return res ? res : c&0xff; + *file->_ptr++ = c; + file->_cnt--; + return c&0xff; } else { unsigned char cc=c; int len; diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c index 97e70f0..eb21697 100644 --- a/dlls/msvcrt/tests/file.c +++ b/dlls/msvcrt/tests/file.c @@ -2239,7 +2239,7 @@ static void test_write_flush_size(FILE *file, int bufsize) */ lseek(fd, 1, SEEK_SET); fflush(file); - todo_wine ok(file->_cnt == 0, "_cnt should be 0 after fflush, but is %d\n", file->_cnt); + ok(file->_cnt == 0, "_cnt should be 0 after fflush, but is %d\n", file->_cnt); fseek(file, 0, SEEK_SET); ok(fread(inbuffer, 1, bufsize, file) == bufsize, "read failed\n"); if (size == bufsize)