summaryrefslogtreecommitdiffstats
path: root/Modules/_fileio.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/_fileio.c')
-rw-r--r--Modules/_fileio.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/Modules/_fileio.c b/Modules/_fileio.c
index 88ee54c..0006561 100644
--- a/Modules/_fileio.c
+++ b/Modules/_fileio.c
@@ -77,11 +77,15 @@ internal_close(PyFileIOObject *self)
if (self->fd >= 0) {
int fd = self->fd;
self->fd = -1;
- Py_BEGIN_ALLOW_THREADS
- err = close(fd);
- if (err < 0)
- save_errno = errno;
- Py_END_ALLOW_THREADS
+ /* fd is accessible and someone else may have closed it */
+ if (_PyVerify_fd(fd)) {
+ Py_BEGIN_ALLOW_THREADS
+ err = close(fd);
+ if (err < 0)
+ save_errno = errno;
+ Py_END_ALLOW_THREADS
+ } else
+ save_errno = errno;
}
if (err < 0) {
errno = save_errno;