diff --git a/lldb/include/lldb/Core/FormatClasses.h b/lldb/include/lldb/Core/FormatClasses.h index 59906f1626f5..cf9258ae9fbc 100644 --- a/lldb/include/lldb/Core/FormatClasses.h +++ b/lldb/include/lldb/Core/FormatClasses.h @@ -11,13 +11,6 @@ #define lldb_FormatClasses_h_ // C Includes - -#if defined (__APPLE__) -#include -#else -#include -#endif - #include #include @@ -302,7 +295,7 @@ public: { private: std::string m_python_class; - PyObject* m_wrapper; + void *m_wrapper; // Wraps PyObject. ScriptInterpreter *m_interpreter; public: @@ -310,10 +303,7 @@ public: lldb::ValueObjectSP be); virtual - ~FrontEnd() - { - Py_XDECREF(m_wrapper); - } + ~FrontEnd(); virtual uint32_t CalculateNumChildren() diff --git a/lldb/include/lldb/Interpreter/ScriptInterpreterPython.h b/lldb/include/lldb/Interpreter/ScriptInterpreterPython.h index 0ddaa7ff84fe..1ac32722903c 100644 --- a/lldb/include/lldb/Interpreter/ScriptInterpreterPython.h +++ b/lldb/include/lldb/Interpreter/ScriptInterpreterPython.h @@ -11,12 +11,6 @@ #ifndef liblldb_ScriptInterpreterPython_h_ #define liblldb_ScriptInterpreterPython_h_ -#if defined (__APPLE__) -#include -#else -#include -#endif - #include "lldb/lldb-private.h" #include "lldb/Interpreter/ScriptInterpreter.h" #include "lldb/Core/InputReader.h" @@ -197,7 +191,7 @@ private: lldb_utility::PseudoTerminal m_embedded_python_pty; lldb::InputReaderSP m_embedded_thread_input_reader_sp; FILE *m_dbg_stdout; - PyObject *m_new_sysout; + void *m_new_sysout; // This is a PyObject. std::string m_dictionary_name; TerminalState m_terminal_state; bool m_session_is_active; diff --git a/lldb/source/Core/FormatClasses.cpp b/lldb/source/Core/FormatClasses.cpp index abfb7fdd553c..ef067344480a 100644 --- a/lldb/source/Core/FormatClasses.cpp +++ b/lldb/source/Core/FormatClasses.cpp @@ -8,6 +8,11 @@ //===----------------------------------------------------------------------===// // C Includes +#if defined (__APPLE__) +#include +#else +#include +#endif // C++ Includes #include @@ -243,7 +248,12 @@ SyntheticScriptProvider::FrontEnd::FrontEnd(std::string pclass, if (m_interpreter == NULL) m_wrapper = NULL; else - m_wrapper = (PyObject*)m_interpreter->CreateSyntheticScriptedProvider(m_python_class, m_backend); + m_wrapper = m_interpreter->CreateSyntheticScriptedProvider(m_python_class, m_backend); +} + +SyntheticScriptProvider::FrontEnd::~FrontEnd() +{ + Py_XDECREF((PyObject*)m_wrapper); } lldb::ValueObjectSP diff --git a/lldb/source/Interpreter/ScriptInterpreterPython.cpp b/lldb/source/Interpreter/ScriptInterpreterPython.cpp index 6b71c82b4e8e..70fb3f8237c1 100644 --- a/lldb/source/Interpreter/ScriptInterpreterPython.cpp +++ b/lldb/source/Interpreter/ScriptInterpreterPython.cpp @@ -8,8 +8,13 @@ //===----------------------------------------------------------------------===// // In order to guarantee correct working with Python, Python.h *MUST* be -// the *FIRST* header file included in ScriptInterpreterPython.h, and that -// must be the *FIRST* header file included here. +// the *FIRST* header file included here. + +#if defined (__APPLE__) +#include +#else +#include +#endif #include "lldb/Interpreter/ScriptInterpreterPython.h" @@ -242,11 +247,11 @@ ScriptInterpreterPython::~ScriptInterpreterPython () { while (!GetPythonLock (1)) fprintf (tmp_fh, "Python interpreter locked on another thread; waiting to acquire lock...\n"); - Py_DECREF (m_new_sysout); + Py_DECREF ((PyObject*)m_new_sysout); ReleasePythonLock (); } else - Py_DECREF (m_new_sysout); + Py_DECREF ((PyObject*)m_new_sysout); } } @@ -358,7 +363,7 @@ ScriptInterpreterPython::EnterSession () if ((m_new_sysout != NULL) && (sysmod != NULL) && (sysdict != NULL)) - PyDict_SetItemString (sysdict, "stdout", m_new_sysout); + PyDict_SetItemString (sysdict, "stdout", (PyObject*)m_new_sysout); if (PyErr_Occurred()) PyErr_Clear ();