(original) (raw)

changeset: 104086:ac24e5c2fd3e user: Berker Peksag berker.peksag@gmail.com date: Mon Sep 26 23:30:41 2016 +0300 files: Lib/test/test_epoll.py Modules/selectmodule.c description: Issue #20100: Simplify newPyEpoll_Object() EPOLL_CLOEXEC is the only value that can be passed to epoll_create1() and we are passing EPOLL_CLOEXEC unconditionally since Python 3.4. diff -r f91650739061 -r ac24e5c2fd3e Lib/test/test_epoll.py --- a/Lib/test/test_epoll.py Mon Sep 26 23:23:01 2016 +0300 +++ b/Lib/test/test_epoll.py Mon Sep 26 23:30:41 2016 +0300 @@ -76,6 +76,8 @@ self.assertRaises(ValueError, ep.fileno) if hasattr(select, "EPOLL_CLOEXEC"): select.epoll(select.EPOLL_CLOEXEC).close() + select.epoll(flags=select.EPOLL_CLOEXEC).close() + select.epoll(flags=0).close() self.assertRaises(OSError, select.epoll, flags=12356) def test_badcreate(self): diff -r f91650739061 -r ac24e5c2fd3e Modules/selectmodule.c --- a/Modules/selectmodule.c Mon Sep 26 23:23:01 2016 +0300 +++ b/Modules/selectmodule.c Mon Sep 26 23:30:41 2016 +0300 @@ -1252,7 +1252,7 @@ } static PyObject * -newPyEpoll_Object(PyTypeObject *type, int sizehint, int flags, SOCKET fd) +newPyEpoll_Object(PyTypeObject *type, int sizehint, SOCKET fd) { pyEpoll_Object *self; @@ -1264,12 +1264,10 @@ if (fd == -1) { Py_BEGIN_ALLOW_THREADS #ifdef HAVE_EPOLL_CREATE1 - flags |= EPOLL_CLOEXEC; - if (flags) - self->epfd = epoll_create1(flags); - else + self->epfd = epoll_create1(EPOLL_CLOEXEC); +#else + self->epfd = epoll_create(sizehint); #endif - self->epfd = epoll_create(sizehint); Py_END_ALLOW_THREADS } else { @@ -1305,8 +1303,12 @@ PyErr_SetString(PyExc_ValueError, "negative sizehint"); return NULL; } + if (flags && flags != EPOLL_CLOEXEC) { + PyErr_SetString(PyExc_OSError, "invalid flags"); + return NULL; + } - return newPyEpoll_Object(type, sizehint, flags, -1); + return newPyEpoll_Object(type, sizehint, -1); } @@ -1364,7 +1366,7 @@ if (!PyArg_ParseTuple(args, "i:fromfd", &fd)) return NULL; - return newPyEpoll_Object((PyTypeObject*)cls, FD_SETSIZE - 1, 0, fd); + return newPyEpoll_Object((PyTypeObject*)cls, FD_SETSIZE - 1, fd); } PyDoc_STRVAR(pyepoll_fromfd_doc, /berker.peksag@gmail.com