Piotr Caban : msvcrt: Don' t report error in fclose on already closed stream.
Alexandre Julliard
julliard at winehq.org
Thu Nov 30 14:19:35 CST 2017
Module: wine
Branch: master
Commit: 96584d858a75ed0fc627ab9912bec815511596cb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=96584d858a75ed0fc627ab9912bec815511596cb
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu Nov 30 20:28:30 2017 +0100
msvcrt: Don't report error in fclose on already closed stream.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msvcrt/file.c | 6 ++++++
dlls/msvcrt/tests/file.c | 3 +++
2 files changed, 9 insertions(+)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 116a9bd..43c3fc4 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -3627,6 +3627,12 @@ int CDECL MSVCRT__fclose_nolock(MSVCRT_FILE* file)
{
int r, flag;
+ if(!(file->_flag & (MSVCRT__IOREAD | MSVCRT__IOWRT | MSVCRT__IORW)))
+ {
+ file->_flag = 0;
+ return MSVCRT_EOF;
+ }
+
flag = file->_flag;
MSVCRT_free(file->_tmpfname);
file->_tmpfname = NULL;
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c
index d4d63f2..136ee15 100644
--- a/dlls/msvcrt/tests/file.c
+++ b/dlls/msvcrt/tests/file.c
@@ -1742,10 +1742,13 @@ static void test_fopen_fclose_fcloseall( void )
ok(ret == 0, "The file '%s' was not closed\n", fname2);
ret = fclose(stream3);
ok(ret == 0, "The file '%s' was not closed\n", fname3);
+ errno = 0xdeadbeef;
ret = fclose(stream2);
ok(ret == EOF, "Closing file '%s' returned %d\n", fname2, ret);
+ ok(errno == 0xdeadbeef, "errno = %d\n", errno);
ret = fclose(stream3);
ok(ret == EOF, "Closing file '%s' returned %d\n", fname3, ret);
+ ok(errno == 0xdeadbeef, "errno = %d\n", errno);
/* testing fcloseall() */
numclosed = _fcloseall();
More information about the wine-cvs
mailing list