Fix an issue where pressing CTRL+C in the interactive script interpreter causes LLDB...
authorEnrico Granata <egranata@apple.com>
Tue, 9 Feb 2016 05:46:47 +0000 (05:46 +0000)
committerEnrico Granata <egranata@apple.com>
Tue, 9 Feb 2016 05:46:47 +0000 (05:46 +0000)
This is because PyThreadState_Get() assumes a non-NULL thread state and crashes otherwise; but PyThreadState_GET is just a shortcut (in non-Python-debugging builds) for the global variable that holds the thread state

The behavior of CTRL+C is slightly more erratic than one would like. CTRL+C in the middle of execution of Python code will cause that execution to be interrupted (e.g. time.sleep(1000)), but a CTRL+C at the prompt will just cause a KeyboardInterrupt and not exit the interpreter - worse, it will only trigger the exception once one presses ENTER.

None of this is optimal, of course, but I don't have a lot of time to appease the Python deities with the proper spells right now, and fixing the crasher is already a good thing in and of itself

llvm-svn: 260199

lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp

index 3a11b83..99e1d09 100644 (file)
@@ -1019,7 +1019,7 @@ ScriptInterpreterPython::Interrupt()
 
     if (IsExecutingPython())
     {
-        PyThreadState *state = PyThreadState_Get();
+        PyThreadState *state = PyThreadState_GET();
         if (!state)
             state = GetThreadState();
         if (state)