Author: enrico
Date: Tue Feb 18 19:45:22 2014
New Revision: 201623
URL: http://llvm.org/viewvc/llvm-project?rev=201623&view=rev
Log:
<rdar://problem/15906684>
The way in which we were determining whether a python module had already been
imported in the current session stopped working due to the IOHandler changes
As a result, importing in a new debug session a module which had been imported
in a previous session did not work
This commit restores that functionality by checking for the module's presence
in the session dictionary (which should be more correct anyway)
Modified:
lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h
lldb/trunk/source/Interpreter/PythonDataObjects.cpp
lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp
Modified: lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h?rev=201623&r1=201622&r2=201623&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h (original)
+++ lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h Tue Feb 18 19:45:22
2014
@@ -98,6 +98,9 @@ namespace lldb_private {
return m_py_obj != NULL;
}
+ bool
+ IsNULLOrNone () const;
+
protected:
PyObject* m_py_obj;
};
Modified: lldb/trunk/source/Interpreter/PythonDataObjects.cpp
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/PythonDataObjects.cpp?rev=201623&r1=201622&r2=201623&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/PythonDataObjects.cpp (original)
+++ lldb/trunk/source/Interpreter/PythonDataObjects.cpp Tue Feb 18 19:45:22 2014
@@ -84,6 +84,12 @@ PythonObject::Str ()
return PythonString(str);
}
+bool
+PythonObject::IsNULLOrNone () const
+{
+ return ((m_py_obj == nullptr) || (m_py_obj == Py_None));
+}
+
//----------------------------------------------------------------------
// PythonString
//----------------------------------------------------------------------
Modified: lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp
URL:
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp?rev=201623&r1=201622&r2=201623&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp (original)
+++ lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp Tue Feb 18
19:45:22 2014
@@ -2278,7 +2278,6 @@ ScriptInterpreterPython::LoadScriptingMo
command_stream.Clear();
command_stream.Printf("sys.modules.__contains__('%s')",basename.c_str());
bool does_contain = false;
- int refcount = 0;
// this call will succeed if the module was ever imported in any
Debugger in the lifetime of the process
// in which this LLDB framework is living
bool was_imported_globally =
(ExecuteOneLineWithReturn(command_stream.GetData(),
@@ -2288,10 +2287,7 @@ ScriptInterpreterPython::LoadScriptingMo
// this call will fail if the module was not imported in this Debugger
before
command_stream.Clear();
command_stream.Printf("sys.getrefcount(%s)",basename.c_str());
- bool was_imported_locally =
(ExecuteOneLineWithReturn(command_stream.GetData(),
-
ScriptInterpreterPython::eScriptReturnTypeInt,
- &refcount,
-
ScriptInterpreter::ExecuteScriptOptions().SetEnableIO(false).SetSetLLDBGlobals(false))
&& refcount > 0);
+ bool was_imported_locally =
!(GetSessionDictionary().GetItemForKey(basename.c_str()).IsNULLOrNone());
bool was_imported = (was_imported_globally || was_imported_locally);
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits