mirror of
https://github.com/python/cpython.git
synced 2025-10-28 09:10:36 +00:00
gh-103968: PyType_FromMetaclass: Allow metaclasses with tp_new=NULL (GH-105386)
This commit is contained in:
parent
58f0bda341
commit
2b90796be6
5 changed files with 53 additions and 9 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue