msvcrt: Use fd critical section in _close.
This commit is contained in:
parent
4508e665c0
commit
afc6962a24
|
@ -988,24 +988,23 @@ int CDECL MSVCRT__fflush_nolock(MSVCRT_FILE* file)
|
||||||
*/
|
*/
|
||||||
int CDECL MSVCRT__close(int fd)
|
int CDECL MSVCRT__close(int fd)
|
||||||
{
|
{
|
||||||
HANDLE hand;
|
ioinfo *info = get_ioinfo(fd);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
LOCK_FILES();
|
LOCK_FILES();
|
||||||
hand = msvcrt_fdtoh(fd);
|
TRACE(":fd (%d) handle (%p)\n", fd, info->handle);
|
||||||
TRACE(":fd (%d) handle (%p)\n",fd,hand);
|
if (!(info->wxflag & WX_OPEN)) {
|
||||||
if (!msvcrt_is_valid_fd(fd)) {
|
|
||||||
ret = -1;
|
ret = -1;
|
||||||
} else {
|
} else {
|
||||||
|
ret = CloseHandle(info->handle) ? 0 : -1;
|
||||||
msvcrt_free_fd(fd);
|
msvcrt_free_fd(fd);
|
||||||
ret = CloseHandle(hand) ? 0 : -1;
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
WARN(":failed-last error (%d)\n",GetLastError());
|
WARN(":failed-last error (%d)\n",GetLastError());
|
||||||
msvcrt_set_errno(GetLastError());
|
msvcrt_set_errno(GetLastError());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNLOCK_FILES();
|
UNLOCK_FILES();
|
||||||
TRACE(":ok\n");
|
release_ioinfo(info);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue