[Python-Dev] GC and ExtensionClass
skip@pobox.com (Skip Montanaro)
skip@pobox.com (Skip Montanaro)
Mon, 14 May 2001 10:54:54 -0500
Martin> That *should* work, except that it also has its 'methods' field
Martin> where tp_traverse would go, and its class_flags field where
Martin> tp_clear would go.
Okay, so I'm completed confused now. I extended the definition of
ECTypeType to include this after the doc string slot:
(traverseproc)0, /* tp_traverse */
(inquiry)0, /* tp_clear */
(richcmpfunc)0, /* rich comparisons */
0L, /* weak reference enabler */
#ifdef COUNT_ALLOCS
/* these must be last */
0, /* tp_alloc */
0, /* tp_free */
0, /* tp_maxalloc */
(struct _typeobject *)0, /* tp_next */
#endif
When I looked at the definition of ECType, after the doc string I saw
METHOD_CHAIN(ExtensionClass_methods)
as Martin indicated. I can't simply insert the same zeroes at the end of
the ECType def'n as I did at the end of the ECTypeType definition. Where
does this METHOD_CHAIN thing go? I looked at the def'n of struct
_typeobject in Include/object.h but didn't see a slot that looked suitable.
FWIW, when I build Python and PyGtk with Py_DEBUG defined as Neil suggested,
I get
Fatal Python error: UNREF invalid object
when I run my failing script. This is with and without making any changes
to ECType or ECTypeType.
Skip