]> granicus.if.org Git - python/commitdiff
Unlink the structseq type from the global list of
authorMartin v. Löwis <martin@v.loewis.de>
Sat, 15 Apr 2006 12:45:05 +0000 (12:45 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sat, 15 Apr 2006 12:45:05 +0000 (12:45 +0000)
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.

Objects/structseq.c

index e1e7cfae62e8223b041bff6ba87778213c3e22a6..e074810df3aed4ff177137988363c317cafe67d9 100644 (file)
@@ -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)