From: Martin v. Löwis Date: Sat, 15 Apr 2006 12:45:05 +0000 (+0000) Subject: Unlink the structseq type from the global list of X-Git-Tag: v2.5a2~214 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c597d1b4468e98f9f1f3fe22ab97012e4be918dc;p=thirdparty%2FPython%2Fcpython.git Unlink the structseq type from the global list of objects before initializing it. It might be linked already if there was a Py_Initialize/Py_Finalize cycle earlier; not unlinking it would break the global list. --- diff --git a/Objects/structseq.c b/Objects/structseq.c index e1e7cfae62e8..e074810df3ae 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -349,6 +349,14 @@ PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc) PyMemberDef* members; int n_members, n_unnamed_members, i, k; +#ifdef Py_TRACE_REFS + /* if the type object was chained, unchain it first + before overwriting its storage */ + if (type->_ob_next) { + _Py_ForgetReference((PyObject*)type); + } +#endif + n_unnamed_members = 0; for (i = 0; desc->fields[i].name != NULL; ++i) if (desc->fields[i].name == PyStructSequence_UnnamedField)