Piotr Caban : msvcrt: Initialize file descriptor critical section.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Nov 11 11:04:46 CST 2014
Module: wine
Branch: master
Commit: 0c4cb6ce5d411a60ec11e52d6481c4148344d067
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0c4cb6ce5d411a60ec11e52d6481c4148344d067
Author: Piotr Caban <piotr at codeweavers.com>
Date: Tue Nov 11 15:58:03 2014 +0100
msvcrt: Initialize file descriptor critical section.
---
dlls/msvcrt/file.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 5049605..0c83d15 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -380,7 +380,9 @@ static int msvcrt_set_fd(HANDLE hand, int flag, int fd)
fdinfo->lookahead[0] = '\n';
fdinfo->lookahead[1] = '\n';
fdinfo->lookahead[2] = '\n';
- fdinfo->exflag = 0;
+ if(!(fdinfo->exflag & EF_CRIT_INIT))
+ InitializeCriticalSection(&fdinfo->crit);
+ fdinfo->exflag = EF_CRIT_INIT;
/* locate next free slot */
if (fd == MSVCRT_fdstart && fd == MSVCRT_fdend)
@@ -1113,7 +1115,17 @@ void msvcrt_free_io(void)
MSVCRT__fcloseall();
for(i=0; i<sizeof(MSVCRT___pioinfo)/sizeof(MSVCRT___pioinfo[0]); i++)
+ {
+ if(!MSVCRT___pioinfo[i])
+ continue;
+
+ for(j=0; j<MSVCRT_FD_BLOCK_SIZE; j++)
+ {
+ if(MSVCRT___pioinfo[i][j].exflag & EF_CRIT_INIT)
+ DeleteCriticalSection(&MSVCRT___pioinfo[i][j].crit);
+ }
MSVCRT_free(MSVCRT___pioinfo[i]);
+ }
for(j=0; j<MSVCRT_stream_idx; j++)
{
More information about the wine-cvs
mailing list