Browse Source
bpo-43916: select.poll uses Py_TPFLAGS_DISALLOW_INSTANTIATION (GH-25750)
pull/25751/head
Erlend Egeberg Aasland
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
8 additions and
13 deletions
-
Lib/test/test_select.py
-
Modules/selectmodule.c
|
|
|
@ -87,6 +87,10 @@ class SelectTestCase(unittest.TestCase): |
|
|
|
a[:] = [F()] * 10 |
|
|
|
self.assertEqual(select.select([], a, []), ([], a[:5], [])) |
|
|
|
|
|
|
|
def test_disallow_instantiation(self): |
|
|
|
tp = type(select.poll()) |
|
|
|
self.assertRaises(TypeError, tp) |
|
|
|
|
|
|
|
def tearDownModule(): |
|
|
|
support.reap_children() |
|
|
|
|
|
|
|
|
|
|
|
@ -728,13 +728,6 @@ newPollObject(PyObject *module) |
|
|
|
return self; |
|
|
|
} |
|
|
|
|
|
|
|
static PyObject * |
|
|
|
poll_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) |
|
|
|
{ |
|
|
|
PyErr_Format(PyExc_TypeError, "Cannot create '%.200s' instances", _PyType_Name(type)); |
|
|
|
return NULL; |
|
|
|
} |
|
|
|
|
|
|
|
static void |
|
|
|
poll_dealloc(pollObject *self) |
|
|
|
{ |
|
|
|
@ -2275,16 +2268,14 @@ static PyMethodDef poll_methods[] = { |
|
|
|
static PyType_Slot poll_Type_slots[] = { |
|
|
|
{Py_tp_dealloc, poll_dealloc}, |
|
|
|
{Py_tp_methods, poll_methods}, |
|
|
|
{Py_tp_new, poll_new}, |
|
|
|
{0, 0}, |
|
|
|
}; |
|
|
|
|
|
|
|
static PyType_Spec poll_Type_spec = { |
|
|
|
"select.poll", |
|
|
|
sizeof(pollObject), |
|
|
|
0, |
|
|
|
Py_TPFLAGS_DEFAULT, |
|
|
|
poll_Type_slots |
|
|
|
.name = "select.poll", |
|
|
|
.basicsize = sizeof(pollObject), |
|
|
|
.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION, |
|
|
|
.slots = poll_Type_slots, |
|
|
|
}; |
|
|
|
|
|
|
|
#ifdef HAVE_SYS_DEVPOLL_H |
|
|
|
|