[Python-Dev] pymalloc API - is 1.5.2 compatibility a possible

explanation? (original) (raw)

M.-A. Lemburg mal@lemburg.com
Tue, 19 Mar 2002 10:05:19 +0100


Skip Montanaro wrote:

1.5.2 rears its ugly head again... Neil S. reported on a number of 3rd party extension modules that don't do object alloc/free properly. I reported a bug to the mysql-python project, which uses PyObjectNEW and PyMemFree. Andy Dustman's reply, in part, was: 1.5.2 apparently does not have PyObjectNew() or PyObjectDel(), thus the problem... The thread is here: http://sourceforge.net/tracker/?func=detail&atid=374932&aid=531671&groupid=22307 Check here for Andy's proposed patch to mysql.c (ignore the non-alloc stuff): http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/mysql-python/MySQLdb/mysql.c.diff?r1=1.16&r2=1.22 It would appear at least some of the breakage stems from actual or perceived differences in the object allocation API between 1.5.2 and 2.x.

FWIW, I use a special #define in the mx tools which allows using the Python 2.x macros in 1.5.2 as well:

#if PY_VERSION_HEX < 0x01060000

#if !defined(PyObject_DEL)

define PyObject_DEL(x) free(x)

define PyObject_Del(x) free(x)

#endif

#endif

Still, the potential code breakage looks frightening for a minor release... I would guess that quite a few of the older modules are not being maintained anymore.

Isn't there anything we can do about this ? E.g. redirect the macros to functions which do all the necessary magic to have pymalloc enabled and redirect to system malloc()/free() for all non-Python object pointers ?!

-- Marc-Andre Lemburg CEO eGenix.com Software GmbH


Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/