[Python-Dev] survey of extension module memory managment (original) (raw)

Fredrik Lundh fredrik@pythonware.com
Tue, 19 Mar 2002 08:43:29 +0100


Neil Schemenauer wrote:

I randomly grabbed a bunch of extension modules by searching the python.org topic guides and by using Parnassus. I looked at 20 different packages. 12 of them implemented an extension type. 12 of them use the memory management API incorrectly and will break if pymalloc is enabled. That's worse than I thought.

$ more Python-1.5.2/Objects/xxobject.c

...

static xxobject * newxxobject(arg) PyObject *arg; { xxobject *xp; xp = PyObject_NEW(xxobject, &Xxtype); if (xp == NULL) return NULL; xp->x_attr = NULL; return xp; }

/* Xx methods */ static void xx_dealloc(xp) xxobject *xp; { Py_XDECREF(xp->x_attr); PyMem_DEL(xp); }

...

it looked like this between 1994 and May 2000.

and as noted elsewhere, PyObject_DEL, PyObject_New, and PyObject_Del don't exist in older versions.