From f66cb5d0eb79083ceaa4b6a1eac6928ce2ebb1e7 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Fri, 22 Jun 2001 17:20:29 +0000 Subject: [PATCH] Corrected an error in the information on supporting weak references in extension types (the docs reflected a development version of the API). This closes SF bug #435066. --- Doc/lib/libweakref.tex | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Doc/lib/libweakref.tex b/Doc/lib/libweakref.tex index 077e25cdae0..0d92ea9cd13 100644 --- a/Doc/lib/libweakref.tex +++ b/Doc/lib/libweakref.tex @@ -226,28 +226,26 @@ PyTypeObject PyInstance_Type = { 0, "instance", - /* lots of stuff omitted for brevity */ + /* Lots of stuff omitted for brevity... */ offsetof(PyInstanceObject, in_weakreflist) /* tp_weaklistoffset */ }; \end{verbatim} The only further addition is that the destructor needs to call the -weak reference manager to clear any weak references and return if the -object has been resurrected. This needs to occur before any other -parts of the destruction have occurred: +weak reference manager to clear any weak references. This should be +done before any other parts of the destruction have occurred: \begin{verbatim} static void instance_dealloc(PyInstanceObject *inst) { - /* allocate tempories if needed, but do not begin - destruction here + /* Allocate tempories if needed, but do not begin + destruction just yet. */ - if (!PyObject_ClearWeakRefs((PyObject *) inst)) - return; + PyObject_ClearWeakRefs((PyObject *) inst); - /* proceed with object destuction normally */ + /* Proceed with object destuction normally. */ } \end{verbatim}