msvcrt: Call the _nolock variant when the file is already locked
Iván Matellanes
matellanesivan at gmail.com
Fri Nov 28 13:48:31 CST 2014
---
dlls/msvcrt/file.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index b0f8735..5176f58 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -1417,7 +1417,7 @@ void CDECL MSVCRT_rewind(MSVCRT_FILE* file)
TRACE(":file (%p) fd (%d)\n",file,file->_file);
MSVCRT__lock_file(file);
- MSVCRT_fseek(file, 0L, SEEK_SET);
+ MSVCRT__fseek_nolock(file, 0L, SEEK_SET);
MSVCRT_clearerr(file);
MSVCRT__unlock_file(file);
}
@@ -3586,7 +3586,7 @@ char * CDECL MSVCRT_fgets(char *s, int size, MSVCRT_FILE* file)
MSVCRT__lock_file(file);
- while ((size >1) && (cc = MSVCRT_fgetc(file)) != MSVCRT_EOF && cc != '\n')
+ while ((size >1) && (cc = MSVCRT__fgetc_nolock(file)) != MSVCRT_EOF && cc != '\n')
{
*s++ = (char)cc;
size --;
@@ -3676,7 +3676,7 @@ int CDECL MSVCRT__getw(MSVCRT_FILE* file)
MSVCRT__lock_file(file);
for (j=0; j<sizeof(int); j++) {
- k = MSVCRT_fgetc(file);
+ k = MSVCRT__fgetc_nolock(file);
if (k == MSVCRT_EOF) {
file->_flag |= MSVCRT__IOEOF;
MSVCRT__unlock_file(file);
@@ -3726,7 +3726,7 @@ MSVCRT_wchar_t * CDECL MSVCRT_fgetws(MSVCRT_wchar_t *s, int size, MSVCRT_FILE* f
MSVCRT__lock_file(file);
- while ((size >1) && (cc = MSVCRT_fgetwc(file)) != MSVCRT_WEOF && cc != '\n')
+ while ((size >1) && (cc = MSVCRT__fgetwc_nolock(file)) != MSVCRT_WEOF && cc != '\n')
{
*s++ = cc;
size --;
@@ -4452,7 +4452,7 @@ int CDECL MSVCRT_fputs(const char *s, MSVCRT_FILE* file)
int ret;
MSVCRT__lock_file(file);
- ret = MSVCRT_fwrite(s, sizeof(*s), len, file) == len ? 0 : MSVCRT_EOF;
+ ret = MSVCRT__fwrite_nolock(s, sizeof(*s), len, file) == len ? 0 : MSVCRT_EOF;
MSVCRT__unlock_file(file);
return ret;
}
@@ -4468,14 +4468,14 @@ int CDECL MSVCRT_fputws(const MSVCRT_wchar_t *s, MSVCRT_FILE* file)
MSVCRT__lock_file(file);
if (!(get_ioinfo_nolock(file->_file)->wxflag & WX_TEXT)) {
- ret = MSVCRT_fwrite(s,sizeof(*s),len,file) == len ? 0 : MSVCRT_EOF;
+ ret = MSVCRT__fwrite_nolock(s,sizeof(*s),len,file) == len ? 0 : MSVCRT_EOF;
MSVCRT__unlock_file(file);
return ret;
}
tmp_buf = add_std_buffer(file);
for (i=0; i<len; i++) {
- if(MSVCRT_fputwc(s[i], file) == MSVCRT_WEOF) {
+ if(MSVCRT__fputwc_nolock(s[i], file) == MSVCRT_WEOF) {
if(tmp_buf) remove_std_buffer(file);
MSVCRT__unlock_file(file);
return MSVCRT_WEOF;
@@ -4512,8 +4512,8 @@ char * CDECL MSVCRT_gets(char *buf)
char * buf_start = buf;
MSVCRT__lock_file(MSVCRT_stdin);
- for(cc = MSVCRT_fgetc(MSVCRT_stdin); cc != MSVCRT_EOF && cc != '\n';
- cc = MSVCRT_fgetc(MSVCRT_stdin))
+ for(cc = MSVCRT__fgetc_nolock(MSVCRT_stdin); cc != MSVCRT_EOF && cc != '\n';
+ cc = MSVCRT__fgetc_nolock(MSVCRT_stdin))
if(cc != '\r') *buf++ = (char)cc;
*buf = '\0';
@@ -4532,8 +4532,8 @@ MSVCRT_wchar_t* CDECL MSVCRT__getws(MSVCRT_wchar_t* buf)
MSVCRT_wchar_t* ws = buf;
MSVCRT__lock_file(MSVCRT_stdin);
- for (cc = MSVCRT_fgetwc(MSVCRT_stdin); cc != MSVCRT_WEOF && cc != '\n';
- cc = MSVCRT_fgetwc(MSVCRT_stdin))
+ for (cc = MSVCRT__fgetwc_nolock(MSVCRT_stdin); cc != MSVCRT_WEOF && cc != '\n';
+ cc = MSVCRT__fgetwc_nolock(MSVCRT_stdin))
{
if (cc != '\r')
*buf++ = (MSVCRT_wchar_t)cc;
@@ -4578,12 +4578,12 @@ int CDECL MSVCRT_puts(const char *s)
int ret;
MSVCRT__lock_file(MSVCRT_stdout);
- if(MSVCRT_fwrite(s, sizeof(*s), len, MSVCRT_stdout) != len) {
+ if(MSVCRT__fwrite_nolock(s, sizeof(*s), len, MSVCRT_stdout) != len) {
MSVCRT__unlock_file(MSVCRT_stdout);
return MSVCRT_EOF;
}
- ret = MSVCRT_fwrite("\n",1,1,MSVCRT_stdout) == 1 ? 0 : MSVCRT_EOF;
+ ret = MSVCRT__fwrite_nolock("\n",1,1,MSVCRT_stdout) == 1 ? 0 : MSVCRT_EOF;
MSVCRT__unlock_file(MSVCRT_stdout);
return ret;
}
@@ -4598,12 +4598,12 @@ int CDECL MSVCRT__putws(const MSVCRT_wchar_t *s)
int ret;
MSVCRT__lock_file(MSVCRT_stdout);
- if(MSVCRT_fwrite(s, sizeof(*s), len, MSVCRT_stdout) != len) {
+ if(MSVCRT__fwrite_nolock(s, sizeof(*s), len, MSVCRT_stdout) != len) {
MSVCRT__unlock_file(MSVCRT_stdout);
return MSVCRT_EOF;
}
- ret = MSVCRT_fwrite(&nl,sizeof(nl),1,MSVCRT_stdout) == 1 ? 0 : MSVCRT_EOF;
+ ret = MSVCRT__fwrite_nolock(&nl,sizeof(nl),1,MSVCRT_stdout) == 1 ? 0 : MSVCRT_EOF;
MSVCRT__unlock_file(MSVCRT_stdout);
return ret;
}
@@ -4671,7 +4671,7 @@ int CDECL MSVCRT_setvbuf(MSVCRT_FILE* file, char *buf, int mode, MSVCRT_size_t s
MSVCRT__lock_file(file);
- MSVCRT_fflush(file);
+ MSVCRT__fflush_nolock(file);
if(file->_flag & MSVCRT__IOMYBUF)
MSVCRT_free(file->_base);
file->_flag &= ~(MSVCRT__IONBF | MSVCRT__IOMYBUF | MSVCRT__USERBUF);
@@ -4823,13 +4823,13 @@ static int puts_clbk_file_w(void *file, int len, const MSVCRT_wchar_t *str)
MSVCRT__lock_file(file);
if(!(get_ioinfo_nolock(((MSVCRT_FILE*)file)->_file)->wxflag & WX_TEXT)) {
- ret = MSVCRT_fwrite(str, sizeof(MSVCRT_wchar_t), len, file);
+ ret = MSVCRT__fwrite_nolock(str, sizeof(MSVCRT_wchar_t), len, file);
MSVCRT__unlock_file(file);
return ret;
}
for(i=0; i<len; i++) {
- if(MSVCRT_fputwc(str[i], file) == MSVCRT_WEOF) {
+ if(MSVCRT__fputwc_nolock(str[i], file) == MSVCRT_WEOF) {
MSVCRT__unlock_file(file);
return -1;
}
--
1.9.1
More information about the wine-patches
mailing list