diff options
author | Petr Viktorin <encukou@gmail.com> | 2023-06-12 15:45:49 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-12 15:45:49 (GMT) |
commit | 2b90796be6959d5ef46b38c434a514fce25be971 (patch) | |
tree | 6b4f0c83e850c385c50b9ba79cd4522ac76a5350 /Modules/_testcapi | |
parent | 58f0bda34126ed790000451874b96140737f40ed (diff) | |
download | cpython-2b90796be6959d5ef46b38c434a514fce25be971.zip cpython-2b90796be6959d5ef46b38c434a514fce25be971.tar.gz cpython-2b90796be6959d5ef46b38c434a514fce25be971.tar.bz2 |
gh-103968: PyType_FromMetaclass: Allow metaclasses with tp_new=NULL (GH-105386)
Diffstat (limited to 'Modules/_testcapi')
-rw-r--r-- | Modules/_testcapi/heaptype.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Modules/_testcapi/heaptype.c b/Modules/_testcapi/heaptype.c index 565ab57..c124871 100644 --- a/Modules/_testcapi/heaptype.c +++ b/Modules/_testcapi/heaptype.c @@ -744,6 +744,12 @@ static PyType_Spec HeapCTypeMetaclassCustomNew_spec = { HeapCTypeMetaclassCustomNew_slots }; +static PyType_Spec HeapCTypeMetaclassNullNew_spec = { + .name = "_testcapi.HeapCTypeMetaclassNullNew", + .flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION, + .slots = empty_type_slots +}; + typedef struct { PyObject_HEAD @@ -1231,6 +1237,13 @@ _PyTestCapi_Init_Heaptype(PyObject *m) { } PyModule_AddObject(m, "HeapCTypeMetaclassCustomNew", HeapCTypeMetaclassCustomNew); + PyObject *HeapCTypeMetaclassNullNew = PyType_FromMetaclass( + &PyType_Type, m, &HeapCTypeMetaclassNullNew_spec, (PyObject *) &PyType_Type); + if (HeapCTypeMetaclassNullNew == NULL) { + return -1; + } + PyModule_AddObject(m, "HeapCTypeMetaclassNullNew", HeapCTypeMetaclassNullNew); + PyObject *HeapCCollection = PyType_FromMetaclass( NULL, m, &HeapCCollection_spec, NULL); if (HeapCCollection == NULL) { |