diff options
author | Tim Peters <tim.peters@gmail.com> | 2002-07-11 06:23:50 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2002-07-11 06:23:50 (GMT) |
commit | 3459251d5a2b9589e03e818effc357e5e60ee4a9 (patch) | |
tree | dd1a63fc9f5904fb0032b87adbfb5dfd684ce823 /Objects/stringobject.c | |
parent | dc1e70987f49aa23bf1d07f32c476edeba0cec30 (diff) | |
download | cpython-3459251d5a2b9589e03e818effc357e5e60ee4a9.zip cpython-3459251d5a2b9589e03e818effc357e5e60ee4a9.tar.gz cpython-3459251d5a2b9589e03e818effc357e5e60ee4a9.tar.bz2 |
object.h special-build macro minefield: renamed all the new lexical
helper macros to something saner, and used them appropriately in other
files too, to reduce #ifdef blocks.
classobject.c, instance_dealloc(): One of my worst Python Memories is
trying to fix this routine a few years ago when COUNT_ALLOCS was defined
but Py_TRACE_REFS wasn't. The special-build code here is way too
complicated. Now it's much simpler. Difference: in a Py_TRACE_REFS
build, the instance is no longer in the doubly-linked list of live
objects while its __del__ method is executing, and that may be visible
via sys.getobjects() called from a __del__ method. Tough -- the object
is presumed dead while its __del__ is executing anyway, and not calling
_Py_NewReference() at the start allows enormous code simplification.
typeobject.c, call_finalizer(): The special-build instance_dealloc()
pain apparently spread to here too via cut-'n-paste, and this is much
simpler now too. In addition, I didn't understand why this routine
was calling _PyObject_GC_TRACK() after a resurrection, since there's no
plausible way _PyObject_GC_UNTRACK() could have been called on the
object by this point. I suspect it was left over from pasting the
instance_delloc() code. Instead asserted that the object is still
tracked. Caution: I suspect we don't have a test that actually
exercises the subtype_dealloc() __del__-resurrected-me code.
Diffstat (limited to 'Objects/stringobject.c')
-rw-r--r-- | Objects/stringobject.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 5d6478b..0543f80 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -3060,9 +3060,7 @@ _PyString_Resize(PyObject **pv, int newsize) return -1; } /* XXX UNREF/NEWREF interface should be more symmetrical */ -#ifdef Py_REF_DEBUG - --_Py_RefTotal; -#endif + _Py_DEC_REFTOTAL; _Py_ForgetReference(v); *pv = (PyObject *) PyObject_REALLOC((char *)v, |