[issue24469] Py2.x int free list can grow without bounds
Serhiy Storchaka
report at bugs.python.org
Mon Nov 28 16:15:12 EST 2016
Serhiy Storchaka added the comment:
It seems to me, that all builtin and extension types set tp_free to PyObject_Del, PyObject_GC_Del, or 0. The int class is the only exception.
int_free() was introduced in 200559fcc664:
> Make sure that tp_free frees the int the same way as tp_dealloc would.
> This fixes the problem that Barry reported on python-dev:
> >>> 23000 .__class__ = bool
> crashes in the deallocator. This was because int inherited tp_free
> from object, which uses the default allocator.
The above example no longer works:
>>> 23000 .__class__ = bool
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __class__ assignment: only for heap types
I think int_free should be removed and tp_free should be reverted to 0 (as in float type).
----------
assignee: -> serhiy.storchaka
keywords: +patch
stage: -> patch review
Added file: http://bugs.python.org/file45679/int-tp_free-2.7.patch
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue24469>
_______________________________________
More information about the Python-bugs-list
mailing list