]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
Close #16742: Fix misuse of memory allocations in PyOS_Readline()
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 10 Oct 2013 14:18:20 +0000 (16:18 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 10 Oct 2013 14:18:20 +0000 (16:18 +0200)
commit2fe9bac4dca34e86d44b7e169f3795fde4c841a1
treebdfa2e05ffa05074b815c1c02ec23d3effcd23d3
parent6cf185dc064577c6f472c86741e91fb28ec82e2d
Close #16742: Fix misuse of memory allocations in PyOS_Readline()

The GIL must be held to call PyMem_Malloc(), whereas PyOS_Readline() releases
the GIL to read input.

The result of the C callback PyOS_ReadlineFunctionPointer must now be a string
allocated by PyMem_RawMalloc() or PyMem_RawRealloc() (or NULL if an error
occurred), instead of a string allocated by PyMem_Malloc() or PyMem_Realloc().

Fixing this issue was required to setup a hook on PyMem_Malloc(), for example
using the tracemalloc module.

PyOS_Readline() copies the result of PyOS_ReadlineFunctionPointer() into a new
buffer allocated by PyMem_Malloc(). So the public API of PyOS_Readline() does
not change.
Doc/c-api/veryhigh.rst
Doc/whatsnew/3.4.rst
Misc/NEWS
Modules/readline.c
Parser/myreadline.c