bpo-46417: _curses uses PyStructSequence_NewType() (GH-30736)

The _curses module now creates its ncurses_version type as a heap
type using PyStructSequence_NewType(), rather than using a static
type.

* Move _PyStructSequence_FiniType() definition to pycore_structseq.h.
* test.pythoninfo: log curses.ncurses_version.
This commit is contained in:
Victor Stinner 2022-01-21 03:30:20 +01:00 committed by GitHub
parent 17f268a4ae
commit 1781d55eb3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 40 additions and 19 deletions

View file

@ -563,7 +563,7 @@ _PyStructSequence_FiniType(PyTypeObject *type)
PyTypeObject *
PyStructSequence_NewType(PyStructSequence_Desc *desc)
_PyStructSequence_NewType(PyStructSequence_Desc *desc, unsigned long tp_flags)
{
PyMemberDef *members;
PyTypeObject *type;
@ -596,7 +596,7 @@ PyStructSequence_NewType(PyStructSequence_Desc *desc)
spec.name = desc->name;
spec.basicsize = sizeof(PyStructSequence) - sizeof(PyObject *);
spec.itemsize = sizeof(PyObject *);
spec.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC;
spec.flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | tp_flags;
spec.slots = slots;
type = (PyTypeObject *)PyType_FromSpecWithBases(&spec, (PyObject *)&PyTuple_Type);
@ -615,6 +615,13 @@ PyStructSequence_NewType(PyStructSequence_Desc *desc)
}
PyTypeObject *
PyStructSequence_NewType(PyStructSequence_Desc *desc)
{
return _PyStructSequence_NewType(desc, 0);
}
/* runtime lifecycle */
PyStatus _PyStructSequence_InitState(PyInterpreterState *interp)