[Lldb-commits] [lldb] r147213 - in /lldb/trunk: source/API/SBDebugger.cpp test/python_api/debugger/TestDebuggerAPI.py

Johnny Chen johnny.chen at apple.com
Thu Dec 22 16:53:45 PST 2011


Author: johnny
Date: Thu Dec 22 18:53:45 2011
New Revision: 147213

URL: http://llvm.org/viewvc/llvm-project?rev=147213&view=rev
Log:
rdar://problem/10216227
LLDB (python bindings) Crashing in lldb::SBDebugger::DeleteTarget(lldb::SBTarget&)

Need to check the validity of (SBTarget&)target passed to SBDebugger::DeleteTarget()
before calling target->Destroy().

Modified:
    lldb/trunk/source/API/SBDebugger.cpp
    lldb/trunk/test/python_api/debugger/TestDebuggerAPI.py

Modified: lldb/trunk/source/API/SBDebugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBDebugger.cpp?rev=147213&r1=147212&r2=147213&view=diff
==============================================================================
--- lldb/trunk/source/API/SBDebugger.cpp (original)
+++ lldb/trunk/source/API/SBDebugger.cpp Thu Dec 22 18:53:45 2011
@@ -616,7 +616,7 @@
 SBDebugger::DeleteTarget (lldb::SBTarget &target)
 {
     bool result = false;
-    if (m_opaque_sp)
+    if (m_opaque_sp && target.IsValid())
     {
         // No need to lock, the target list is thread safe
         result = m_opaque_sp->GetTargetList().DeleteTarget (target.m_opaque_sp);

Modified: lldb/trunk/test/python_api/debugger/TestDebuggerAPI.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/python_api/debugger/TestDebuggerAPI.py?rev=147213&r1=147212&r2=147213&view=diff
==============================================================================
--- lldb/trunk/test/python_api/debugger/TestDebuggerAPI.py (original)
+++ lldb/trunk/test/python_api/debugger/TestDebuggerAPI.py Thu Dec 22 18:53:45 2011
@@ -28,3 +28,11 @@
         self.dbg.SetPrompt(None)
         self.dbg.SetCurrentPlatform(None)
         self.dbg.SetCurrentPlatformSDKRoot(None)
+
+    @python_api_test
+    def test_debugger_delete_invalid_target(self):
+        """SBDebugger.DeleteTarget() should not crash LLDB given and invalid target."""
+        target = lldb.SBTarget()
+        self.assertFalse(target.IsValid())
+        self.dbg.DeleteTarget(target)
+        





More information about the lldb-commits mailing list