]> granicus.if.org Git - python/commitdiff
Issue #20100: Simplify newPyEpoll_Object()
authorBerker Peksag <berker.peksag@gmail.com>
Mon, 26 Sep 2016 20:30:41 +0000 (23:30 +0300)
committerBerker Peksag <berker.peksag@gmail.com>
Mon, 26 Sep 2016 20:30:41 +0000 (23:30 +0300)
EPOLL_CLOEXEC is the only value that can be passed
to epoll_create1() and we are passing EPOLL_CLOEXEC
unconditionally since Python 3.4.

Lib/test/test_epoll.py
Modules/selectmodule.c

index a7aff8a59ef6f07e295714ef01dd6e7716672432..549e0f712168be14c5a18bc4b1b00b5213779d00 100644 (file)
@@ -76,6 +76,8 @@ class TestEPoll(unittest.TestCase):
         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):
index 47da49399f737dd1affa0b6c7786de0bfcfb6380..79cf1990d0fe06d18cd44f308706246e9ebd7ea8 100644 (file)
@@ -1252,7 +1252,7 @@ pyepoll_internal_close(pyEpoll_Object *self)
 }
 
 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 @@ newPyEpoll_Object(PyTypeObject *type, int sizehint, int flags, SOCKET fd)
     if (fd == -1) {
         Py_BEGIN_ALLOW_THREADS
 #ifdef HAVE_EPOLL_CREATE1
-        flags |= EPOLL_CLOEXEC;
-        if (flags)
-            self->epfd = epoll_create1(flags);
-        else
-#endif
+        self->epfd = epoll_create1(EPOLL_CLOEXEC);
+#else
         self->epfd = epoll_create(sizehint);
+#endif
         Py_END_ALLOW_THREADS
     }
     else {
@@ -1305,8 +1303,12 @@ pyepoll_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
         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 @@ pyepoll_fromfd(PyObject *cls, PyObject *args)
     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,