Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de writes:
int MSVCRT_fclose(MSVCRT_FILE* file) { int r; r=_close(file->_file); TRACE("r 0x%08x flag 0x%08x %s\n",r, file->_flag, (file->_flag & MSVCRT__IOERR)?"MSVCRT__IOERR":""); return ((r==MSVCRT_EOF) || (file->_flag & MSVCRT__IOERR) ? MSVCRT_EOF :0); }
While the trace in line 321037 shows that MSVCRT__IOERR is not set, the return value implies that MSVCRT__IOERR is set.
I run on a dual celeron. Is msvcrt perhaps not thread safe?
Well, seeing that there are no locks at all in the above function I think the answer is clear... and yes that should probably be fixed.