mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
Issue #23524: Replace _PyVerify_fd function with calls to _set_thread_local_invalid_parameter_handler.
This commit is contained in:
parent
fe0a41aae4
commit
8fc8980c96
11 changed files with 150 additions and 69 deletions
|
@ -1280,10 +1280,6 @@ fildes_converter(PyObject *o, void *p)
|
|||
fd = PyObject_AsFileDescriptor(o);
|
||||
if (fd < 0)
|
||||
return 0;
|
||||
if (!_PyVerify_fd(fd)) {
|
||||
posix_error();
|
||||
return 0;
|
||||
}
|
||||
*pointer = fd;
|
||||
return 1;
|
||||
}
|
||||
|
@ -1294,9 +1290,14 @@ posix_fildes_fd(int fd, int (*func)(int))
|
|||
int res;
|
||||
int async_err = 0;
|
||||
|
||||
if (!_PyVerify_fd(fd))
|
||||
return posix_error();
|
||||
|
||||
do {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
res = (*func)(fd);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
} while (res != 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||
if (res != 0)
|
||||
|
@ -4359,6 +4360,7 @@ os_unlink_impl(PyModuleDef *module, path_t *path, int dir_fd)
|
|||
int result;
|
||||
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
#ifdef MS_WINDOWS
|
||||
if (path->wide)
|
||||
result = Py_DeleteFileW(path->wide);
|
||||
|
@ -4373,6 +4375,7 @@ os_unlink_impl(PyModuleDef *module, path_t *path, int dir_fd)
|
|||
#endif /* HAVE_UNLINKAT */
|
||||
result = unlink(path->narrow);
|
||||
#endif
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
|
||||
if (result)
|
||||
|
@ -7692,6 +7695,7 @@ os_open_impl(PyModuleDef *module, path_t *path, int flags, int mode, int dir_fd)
|
|||
flags |= O_CLOEXEC;
|
||||
#endif
|
||||
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
do {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
#ifdef MS_WINDOWS
|
||||
|
@ -7707,6 +7711,7 @@ os_open_impl(PyModuleDef *module, path_t *path, int flags, int mode, int dir_fd)
|
|||
fd = open(path->narrow, flags, mode);
|
||||
Py_END_ALLOW_THREADS
|
||||
} while (fd < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||
_Py_END_SUPPRESS_IPH
|
||||
|
||||
if (fd == -1) {
|
||||
if (!async_err)
|
||||
|
@ -7745,7 +7750,9 @@ os_close_impl(PyModuleDef *module, int fd)
|
|||
* for more details.
|
||||
*/
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
res = close(fd);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
if (res < 0)
|
||||
return posix_error();
|
||||
|
@ -7769,9 +7776,11 @@ os_closerange_impl(PyModuleDef *module, int fd_low, int fd_high)
|
|||
{
|
||||
int i;
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
for (i = fd_low; i < fd_high; i++)
|
||||
if (_PyVerify_fd(i))
|
||||
close(i);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
@ -7823,7 +7832,9 @@ os_dup2_impl(PyModuleDef *module, int fd, int fd2, int inheritable)
|
|||
*/
|
||||
#ifdef MS_WINDOWS
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
res = dup2(fd, fd2);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
if (res < 0)
|
||||
return posix_error();
|
||||
|
@ -7957,11 +7968,13 @@ os_lseek_impl(PyModuleDef *module, int fd, Py_off_t position, int how)
|
|||
return -1;
|
||||
}
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
#ifdef MS_WINDOWS
|
||||
result = _lseeki64(fd, position, how);
|
||||
#else
|
||||
result = lseek(fd, position, how);
|
||||
#endif
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
if (result < 0)
|
||||
posix_error();
|
||||
|
@ -8168,7 +8181,9 @@ os_pread_impl(PyModuleDef *module, int fd, int length, Py_off_t offset)
|
|||
|
||||
do {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
n = pread(fd, PyBytes_AS_STRING(buffer), length, offset);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
} while (n < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||
|
||||
|
@ -8276,6 +8291,7 @@ posix_sendfile(PyObject *self, PyObject *args, PyObject *kwdict)
|
|||
}
|
||||
}
|
||||
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
do {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
#ifdef __APPLE__
|
||||
|
@ -8285,6 +8301,7 @@ posix_sendfile(PyObject *self, PyObject *args, PyObject *kwdict)
|
|||
#endif
|
||||
Py_END_ALLOW_THREADS
|
||||
} while (ret < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||
_Py_END_SUPPRESS_IPH
|
||||
|
||||
if (sf.headers != NULL)
|
||||
iov_cleanup(sf.headers, hbuf, sf.hdr_cnt);
|
||||
|
@ -8401,9 +8418,13 @@ static int
|
|||
os_isatty_impl(PyModuleDef *module, int fd)
|
||||
/*[clinic end generated code: output=acec9d3c29d16d33 input=08ce94aa1eaf7b5e]*/
|
||||
{
|
||||
int return_value;
|
||||
if (!_PyVerify_fd(fd))
|
||||
return 0;
|
||||
return isatty(fd);
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
return_value = isatty(fd);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
return return_value;
|
||||
}
|
||||
|
||||
|
||||
|
@ -8598,7 +8619,9 @@ os_pwrite_impl(PyModuleDef *module, int fd, Py_buffer *buffer, Py_off_t offset)
|
|||
|
||||
do {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
size = pwrite(fd, buffer->buf, (size_t)buffer->len, offset);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
Py_END_ALLOW_THREADS
|
||||
} while (size < 0 && errno == EINTR && !(async_err = PyErr_CheckSignals()));
|
||||
|
||||
|
@ -11193,12 +11216,16 @@ static int
|
|||
os_get_inheritable_impl(PyModuleDef *module, int fd)
|
||||
/*[clinic end generated code: output=36110bb36efaa21e input=89ac008dc9ab6b95]*/
|
||||
{
|
||||
if (!_PyVerify_fd(fd)){
|
||||
int return_value;
|
||||
if (!_PyVerify_fd(fd)) {
|
||||
posix_error();
|
||||
return -1;
|
||||
}
|
||||
|
||||
return _Py_get_inheritable(fd);
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
return_value = _Py_get_inheritable(fd);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
return return_value;
|
||||
}
|
||||
|
||||
|
||||
|
@ -11215,10 +11242,14 @@ static PyObject *
|
|||
os_set_inheritable_impl(PyModuleDef *module, int fd, int inheritable)
|
||||
/*[clinic end generated code: output=2ac5c6ce8623f045 input=9ceaead87a1e2402]*/
|
||||
{
|
||||
int result;
|
||||
if (!_PyVerify_fd(fd))
|
||||
return posix_error();
|
||||
|
||||
if (_Py_set_inheritable(fd, inheritable, NULL) < 0)
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
result = _Py_set_inheritable(fd, inheritable, NULL);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
if (result < 0)
|
||||
return NULL;
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
@ -11289,7 +11320,9 @@ posix_get_blocking(PyObject *self, PyObject *args)
|
|||
if (!_PyVerify_fd(fd))
|
||||
return posix_error();
|
||||
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
blocking = _Py_get_blocking(fd);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
if (blocking < 0)
|
||||
return NULL;
|
||||
return PyBool_FromLong(blocking);
|
||||
|
@ -11305,7 +11338,7 @@ PyDoc_STRVAR(set_blocking__doc__,
|
|||
static PyObject*
|
||||
posix_set_blocking(PyObject *self, PyObject *args)
|
||||
{
|
||||
int fd, blocking;
|
||||
int fd, blocking, result;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "ii:set_blocking", &fd, &blocking))
|
||||
return NULL;
|
||||
|
@ -11313,7 +11346,10 @@ posix_set_blocking(PyObject *self, PyObject *args)
|
|||
if (!_PyVerify_fd(fd))
|
||||
return posix_error();
|
||||
|
||||
if (_Py_set_blocking(fd, blocking) < 0)
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
result = _Py_set_blocking(fd, blocking);
|
||||
_Py_END_SUPPRESS_IPH
|
||||
if (result < 0)
|
||||
return NULL;
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue