Piotr Caban : msvcrt: Make FILE->_flag reading functions thread safe.
Alexandre Julliard
julliard at winehq.org
Fri May 20 12:44:33 CDT 2011
Module: wine
Branch: master
Commit: ae15a4b6bcc6163255ffb01e820ba5b4532febf9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ae15a4b6bcc6163255ffb01e820ba5b4532febf9
Author: Piotr Caban <piotr at codeweavers.com>
Date: Fri May 20 13:22:29 2011 +0200
msvcrt: Make FILE->_flag reading functions thread safe.
---
dlls/msvcrt/file.c | 28 +++++++++++++++++++++++++---
1 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 444a8d8..16aa10c 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -1198,7 +1198,10 @@ int CDECL MSVCRT__chsize(int fd, MSVCRT_long size)
void CDECL MSVCRT_clearerr(MSVCRT_FILE* file)
{
TRACE(":file (%p) fd (%d)\n",file,file->_file);
+
+ MSVCRT__lock_file(file);
file->_flag &= ~(MSVCRT__IOERR | MSVCRT__IOEOF);
+ MSVCRT__unlock_file(file);
}
/*********************************************************************
@@ -1338,8 +1341,15 @@ __int64 CDECL MSVCRT__filelengthi64(int fd)
*/
int CDECL MSVCRT__fileno(MSVCRT_FILE* file)
{
+ int ret;
+
TRACE(":FILE* (%p) fd (%d)\n",file,file->_file);
- return file->_file;
+
+ MSVCRT__lock_file(file);
+ ret = file->_file;
+ MSVCRT__unlock_file(file);
+
+ return ret;
}
/*********************************************************************
@@ -2589,7 +2599,13 @@ int CDECL MSVCRT_fclose(MSVCRT_FILE* file)
*/
int CDECL MSVCRT_feof(MSVCRT_FILE* file)
{
- return file->_flag & MSVCRT__IOEOF;
+ int ret;
+
+ MSVCRT__lock_file(file);
+ ret = file->_flag & MSVCRT__IOEOF;
+ MSVCRT__unlock_file(file);
+
+ return ret;
}
/*********************************************************************
@@ -2597,7 +2613,13 @@ int CDECL MSVCRT_feof(MSVCRT_FILE* file)
*/
int CDECL MSVCRT_ferror(MSVCRT_FILE* file)
{
- return file->_flag & MSVCRT__IOERR;
+ int ret;
+
+ MSVCRT__lock_file(file);
+ ret = file->_flag & MSVCRT__IOERR;
+ MSVCRT__unlock_file(file);
+
+ return ret;
}
/*********************************************************************
More information about the wine-cvs
mailing list