This commit is contained in:
parent
48d9823a0e
commit
d4b93e21c2
|
@ -298,6 +298,16 @@ class PosixTester(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
os.close(fd)
|
os.close(fd)
|
||||||
|
|
||||||
|
# issue31106 - posix_fallocate() does not set error in errno.
|
||||||
|
@unittest.skipUnless(hasattr(posix, 'posix_fallocate'),
|
||||||
|
"test needs posix.posix_fallocate()")
|
||||||
|
def test_posix_fallocate_errno(self):
|
||||||
|
try:
|
||||||
|
posix.posix_fallocate(-42, 0, 10)
|
||||||
|
except OSError as inst:
|
||||||
|
if inst.errno != errno.EBADF:
|
||||||
|
raise
|
||||||
|
|
||||||
@unittest.skipUnless(hasattr(posix, 'posix_fadvise'),
|
@unittest.skipUnless(hasattr(posix, 'posix_fadvise'),
|
||||||
"test needs posix.posix_fadvise()")
|
"test needs posix.posix_fadvise()")
|
||||||
def test_posix_fadvise(self):
|
def test_posix_fadvise(self):
|
||||||
|
@ -307,6 +317,15 @@ class PosixTester(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
os.close(fd)
|
os.close(fd)
|
||||||
|
|
||||||
|
@unittest.skipUnless(hasattr(posix, 'posix_fadvise'),
|
||||||
|
"test needs posix.posix_fadvise()")
|
||||||
|
def test_posix_fadvise_errno(self):
|
||||||
|
try:
|
||||||
|
posix.posix_fadvise(-42, 0, 0, posix.POSIX_FADV_WILLNEED)
|
||||||
|
except OSError as inst:
|
||||||
|
if inst.errno != errno.EBADF:
|
||||||
|
raise
|
||||||
|
|
||||||
@unittest.skipUnless(os.utime in os.supports_fd, "test needs fd support in os.utime")
|
@unittest.skipUnless(os.utime in os.supports_fd, "test needs fd support in os.utime")
|
||||||
def test_utime_with_fd(self):
|
def test_utime_with_fd(self):
|
||||||
now = time.time()
|
now = time.time()
|
||||||
|
|
|
@ -8917,11 +8917,16 @@ os_posix_fallocate_impl(PyObject *module, int fd, Py_off_t offset,
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
result = posix_fallocate(fd, offset, length);
|
result = posix_fallocate(fd, offset, length);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
} while (result != 0 && errno == EINTR &&
|
} while (result == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||||
!(async_err = PyErr_CheckSignals()));
|
|
||||||
if (result != 0)
|
if (result == 0)
|
||||||
return (!async_err) ? posix_error() : NULL;
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
|
|
||||||
|
if (async_err)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
errno = result;
|
||||||
|
return posix_error();
|
||||||
}
|
}
|
||||||
#endif /* HAVE_POSIX_FALLOCATE) && !POSIX_FADVISE_AIX_BUG */
|
#endif /* HAVE_POSIX_FALLOCATE) && !POSIX_FADVISE_AIX_BUG */
|
||||||
|
|
||||||
|
@ -8959,11 +8964,16 @@ os_posix_fadvise_impl(PyObject *module, int fd, Py_off_t offset,
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
result = posix_fadvise(fd, offset, length, advice);
|
result = posix_fadvise(fd, offset, length, advice);
|
||||||
Py_END_ALLOW_THREADS
|
Py_END_ALLOW_THREADS
|
||||||
} while (result != 0 && errno == EINTR &&
|
} while (result == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||||
!(async_err = PyErr_CheckSignals()));
|
|
||||||
if (result != 0)
|
if (result == 0)
|
||||||
return (!async_err) ? posix_error() : NULL;
|
|
||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
|
|
||||||
|
if (async_err)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
errno = result;
|
||||||
|
return posix_error();
|
||||||
}
|
}
|
||||||
#endif /* HAVE_POSIX_FADVISE && !POSIX_FADVISE_AIX_BUG */
|
#endif /* HAVE_POSIX_FADVISE && !POSIX_FADVISE_AIX_BUG */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue