]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-43916: select.devpoll uses Py_TPFLAGS_DISALLOW_INSTANTIATION (GH-25751)
authorVictor Stinner <vstinner@python.org>
Fri, 30 Apr 2021 16:19:57 +0000 (18:19 +0200)
committerGitHub <noreply@github.com>
Fri, 30 Apr 2021 16:19:57 +0000 (18:19 +0200)
Lib/test/test_select.py
Modules/selectmodule.c

index 1ef5624354987466a963a7a352162e974d13422b..957a633f3230e778bd32602cf29ba00030e1ddd0 100644 (file)
@@ -91,6 +91,10 @@ class SelectTestCase(unittest.TestCase):
         tp = type(select.poll())
         self.assertRaises(TypeError, tp)
 
+        if hasattr(select, 'devpoll'):
+            tp = type(select.devpoll())
+            self.assertRaises(TypeError, tp)
+
 def tearDownModule():
     support.reap_children()
 
index 5038c325faa4eb77e0cd3be867aa15a394935338..3ecd0c32b3038948c081d7eb6d63d617c72059d6 100644 (file)
@@ -1110,13 +1110,6 @@ newDevPollObject(PyObject *module)
     return self;
 }
 
-static PyObject *
-devpoll_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
-{
-    PyErr_Format(PyExc_TypeError, "Cannot create '%.200s' instances", _PyType_Name(type));
-    return NULL;
-}
-
 static void
 devpoll_dealloc(devpollObject *self)
 {
@@ -1131,7 +1124,6 @@ static PyType_Slot devpoll_Type_slots[] = {
     {Py_tp_dealloc, devpoll_dealloc},
     {Py_tp_getset, devpoll_getsetlist},
     {Py_tp_methods, devpoll_methods},
-    {Py_tp_new, devpoll_new},
     {0, 0},
 };
 
@@ -1139,7 +1131,7 @@ static PyType_Spec devpoll_Type_spec = {
     "select.devpoll",
     sizeof(devpollObject),
     0,
-    Py_TPFLAGS_DEFAULT,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,
     devpoll_Type_slots
 };