Staging
v0.8.1
https://github.com/python/cpython
Revision 97719c9ce56bfb19fa7b0833c8c7947ad2fd7e52 authored by Tim Peters on 21 May 2003, 20:43:10 UTC, committed by Tim Peters on 21 May 2003, 20:43:10 UTC
tp_free is NULL or PyObject_Del at the end.  Because it's a base type
it must call tp_free in its dealloc function, and because it's gc'able
it must not call PyObject_Del.

inherit_slots():  Don't inherit tp_free unless the type and its base
agree about whether they're gc'able.  If the type is gc'able and the
base is not, and the base uses the default PyObject_Del for its
tp_free, give the type PyObject_GC_Del for its tp_free (the appropriate
default for a gc'able type).

cPickle.c:  The Pickler and Unpickler types claim to be base classes
and gc'able, but their dealloc functions didn't call tp_free.
Repaired that.  Also call PyType_Ready() on these typeobjects, so
that the correct (PyObject_GC_Del) default memory-freeing function
gets plugged into these types' tp_free slots.
1 parent 54d9cdf
History
Tip revision: 97719c9ce56bfb19fa7b0833c8c7947ad2fd7e52 authored by Tim Peters on 21 May 2003, 20:43:10 UTC
PyType_Ready(): Complain if the type is a base type, and gc'able, and
Tip revision: 97719c9
File Mode Size
Para.py -rw-r--r-- 9.9 KB
addpack.py -rw-r--r-- 2.3 KB
cmp.py -rw-r--r-- 1.9 KB
cmpcache.py -rw-r--r-- 2.0 KB
codehack.py -rw-r--r-- 2.4 KB
dircmp.py -rw-r--r-- 5.9 KB
dump.py -rw-r--r-- 1.6 KB
find.py -rw-r--r-- 590 bytes
fmt.py -rw-r--r-- 14.8 KB
grep.py -rw-r--r-- 1.8 KB
lockfile.py -rw-r--r-- 281 bytes
newdir.py -rw-r--r-- 1.5 KB
ni.py -rw-r--r-- 14.6 KB
packmail.py -rw-r--r-- 2.6 KB
poly.py -rw-r--r-- 1.3 KB
rand.py -rw-r--r-- 276 bytes
tb.py -rw-r--r-- 4.0 KB
util.py -rw-r--r-- 649 bytes
whatsound.py -rw-r--r-- 21 bytes
zmod.py -rw-r--r-- 2.2 KB

back to top