diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-03-17 23:22:14 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-03-17 23:22:14 (GMT) |
commit | a555cfcb73cf677a99d29af6fa0bcfe4c35a2aeb (patch) | |
tree | fa88ce2ae8c7d2213dc3e80845405d0d8719308a /Modules/selectmodule.c | |
parent | 6562b29e13f4da98558636c43a1b242698c8f8d9 (diff) | |
download | cpython-a555cfcb73cf677a99d29af6fa0bcfe4c35a2aeb.zip cpython-a555cfcb73cf677a99d29af6fa0bcfe4c35a2aeb.tar.gz cpython-a555cfcb73cf677a99d29af6fa0bcfe4c35a2aeb.tar.bz2 |
Issue #23694: Enhance _Py_open(), it now raises exceptions
* _Py_open() now raises exceptions on error. If open() fails, it raises an
OSError with the filename.
* _Py_open() now releases the GIL while calling open()
* Add _Py_open_noraise() when _Py_open() cannot be used because the GIL is not
held
Diffstat (limited to 'Modules/selectmodule.c')
-rw-r--r-- | Modules/selectmodule.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c index ffaf865..ef53067 100644 --- a/Modules/selectmodule.c +++ b/Modules/selectmodule.c @@ -1013,7 +1013,6 @@ newDevPollObject(void) struct pollfd *fds; struct rlimit limit; - Py_BEGIN_ALLOW_THREADS /* ** If we try to process more that getrlimit() ** fds, the kernel will give an error, so @@ -1021,18 +1020,14 @@ newDevPollObject(void) ** value, because we can change rlimit() anytime. */ limit_result = getrlimit(RLIMIT_NOFILE, &limit); - if (limit_result != -1) - fd_devpoll = _Py_open("/dev/poll", O_RDWR); - Py_END_ALLOW_THREADS - if (limit_result == -1) { PyErr_SetFromErrno(PyExc_OSError); return NULL; } - if (fd_devpoll == -1) { - PyErr_SetFromErrnoWithFilename(PyExc_IOError, "/dev/poll"); + + fd_devpoll = _Py_open("/dev/poll", O_RDWR); + if (fd_devpoll == -1) return NULL; - } fds = PyMem_NEW(struct pollfd, limit.rlim_cur); if (fds == NULL) { |