From 72017cc9ab31382b8d47005c5e843b635e96d208 Mon Sep 17 00:00:00 2001
From: Peter Beutner
Date: Fri, 17 Feb 2006 17:38:03 +0100
Subject: [PATCH] msvcrt: Correctly set EOF flag in fread(). Setting the EOF
flag only if _read() returns zero is not enough as we could also read
something AND hit the end of file. _read() already sets another internal EOF
flag, so just use this too. Removing todo_wine from the test case.
---
dlls/msvcrt/file.c | 2 +-
dlls/msvcrt/tests/file.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 14e786a5487..9162ee7e30b 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -2503,7 +2503,7 @@ MSVCRT_size_t MSVCRT_fread(void *ptr, MSVCRT_size_t size, MSVCRT_size_t nmemb, M
/* expose feof condition in the flags
* MFC tests file->_flag for feof, and doesn't not call feof())
*/
- if (pread == 0)
+ if ( MSVCRT_fdesc[file->_file].wxflag & WX_ATEOF)
file->_flag |= MSVCRT__IOEOF;
else if (pread == -1)
{
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c
index 086c37fa05d..bcc60fd2dae 100644
--- a/dlls/msvcrt/tests/file.c
+++ b/dlls/msvcrt/tests/file.c
@@ -125,7 +125,7 @@ static void test_fileops( void )
/* sizeof(buffer) > content of file */
ok(fread(buffer, sizeof(buffer), 1, file) == 0, "fread test failed\n");
/* feof should be set now */
- todo_wine ok(feof(file), "feof after fread failed\n");
+ ok(feof(file), "feof after fread failed\n");
fclose (file);
unlink ("fdopen.tst");
--
2.11.4.GIT