[2/3] msvcrt: Clear _cnt on buffer flush. (try 2)
Grazvydas Ignotas
notasas at gmail.com
Wed Jun 18 05:55:52 CDT 2014
---
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 9fc95b0..29f6ddb 100644
--- a/dlls/msvcrt/tests/file.c
+++ b/dlls/msvcrt/tests/file.c
@@ -2240,7 +2240,7 @@ static void test_write_flush_size(FILE *file, size_t 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)
--
1.7.9.5
More information about the wine-patches
mailing list