Revert and patch "[Python] Remove readline module"
authorserge-sans-paille <sguelton@redhat.com>
Tue, 5 Nov 2019 10:38:39 +0000 (11:38 +0100)
committerserge-sans-paille <sguelton@redhat.com>
Tue, 5 Nov 2019 10:39:19 +0000 (11:39 +0100)
commit9357b5d08497326a1895cab6c1d712bf12a34519
tree4d9ce6e89c165af01b220532b12c0b84b84dc4d1
parent0e56b0f94bfc683c5a95e96784cfc9229a730bc8
Revert and patch "[Python] Remove readline module"

Fix https://bugs.llvm.org/show_bug.cgi?id=43830 while avoiding polluting the
global Python namespace.

This both reverts r357277 to rebundle a version of Python's readline module
based on libedit.

However, this patch also provides two improvements over the previous
implementation:

1. use PyMem_RawMalloc instead of PyMem_Malloc, as expected by PyOS_Readline
   (prevents to segfault upon exit of interactive session)
2. patch the readline module upon embedded interpreter loading, instead of
   patching it globally, which should prevent any side effect on other
   modules/packages
3. only activate the patched module if libedit is actually linked in lldb

Differential Revision: https://reviews.llvm.org/D69793
lldb/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt
lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.cpp [new file with mode: 0644]
lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h [new file with mode: 0644]
lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp