New submission from STINNER Victor <victor.stin...@haypocalc.com>: PyObject_DEL() should not be used to destroy an object because it will break the linked list of allocated objects, list used in pydebug mode to detect bugs. cElementTree should use Py_DECREF() instead of PyObject_DEL() to destroy an objects.
Attached patch fixes that: * Replace PyObject_Del() by Py_DECREF() * Catch element_new_extra() errors * parser dealloc: replace Py_DECREF() by Py_XDECREF() because the pointer may be NULL (error in the constructor) * set all parser attributes to NULL at the beginning of the constructor to be able to call safetly the destructor * element_new(): define tag, text, tail attributes before calling element_new_extra() to be able to call the destructor * raise a MemoryError on element_new_extra() failure. element_new() didn't raise any error on element_new_extra() failure. Other functions just forget to catch element_new_extra() error. See #3299 for the whole story. ---------- components: Library (Lib) files: celementtree_py_decref.patch keywords: patch messages: 111846 nosy: haypo priority: normal severity: normal status: open title: cElementTree: replace PyObject_DEL() by Py_DECREF() to fix a crash in pydebug mode versions: Python 2.7, Python 3.2 Added file: http://bugs.python.org/file18236/celementtree_py_decref.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue9403> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com