[Python-Dev] A little GC confusion
Michael Hudson
mwh@python.net
21 Feb 2002 13:47:56 +0000
Kevin Jacobs <jacobs@penguin.theopalgroup.com> writes:
> I doesn't have any time to really look at your code, but I thought I'd point
> out a trick that several extension modules use to protect statically
> allocated type objects. Here is the code from socketmodule.c:
>
> /* static PyTypeObject PySocketSock_Type = {
> .
> .
> .
> 0, /* set below */ /* tp_alloc */
> PySocketSock_new, /* tp_new */
> 0, /* set below */ /* tp_free */
> };
>
> /* buried in init_socket */
> PySocketSock_Type.tp_alloc = PyType_GenericAlloc;
> PySocketSock_Type.tp_free = _PyObject_Del;
>
> This trick ensures that the static type object is never freed.
Um, I think you'll find this is because PyType_GenericAlloc &
_PyObject_Del aren't compile-time constants when _socket is
dynamically linked (they're defined in a different dll).
Cheers,
M.
--
> so python will fork if activestate starts polluting it?
I find it more relevant to speculate on whether Python would fork
if the merpeople start invading our cities riding on the backs of
giant king crabs. -- Brian Quinlan, comp.lang.python