summaryrefslogtreecommitdiffstats
path: root/Modules/_testcapi
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-06-12 16:24:21 (GMT)
committerGitHub <noreply@github.com>2023-06-12 16:24:21 (GMT)
commit2eed1f5868b1c54a5314b64c38010258d27658da (patch)
tree7b85f4a2893518bf280c6df8aaea366d7ecdf2d3 /Modules/_testcapi
parent9e3e5d533efe154d0df15b2f666fcf88a936d745 (diff)
downloadcpython-2eed1f5868b1c54a5314b64c38010258d27658da.zip
cpython-2eed1f5868b1c54a5314b64c38010258d27658da.tar.gz
cpython-2eed1f5868b1c54a5314b64c38010258d27658da.tar.bz2
[3.12] gh-103968: PyType_FromMetaclass: Allow metaclasses with tp_new=NULL (GH-105386) (GH-105697)
gh-103968: PyType_FromMetaclass: Allow metaclasses with tp_new=NULL (GH-105386) (cherry picked from commit 2b90796be6959d5ef46b38c434a514fce25be971) Co-authored-by: Petr Viktorin <encukou@gmail.com>
Diffstat (limited to 'Modules/_testcapi')
-rw-r--r--Modules/_testcapi/heaptype.c13
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) {