[Lldb-commits] [PATCH] Introduce a new UnwindAssemblySP shared pointer type and use it to fix a memory leak. We are never deleting UnwindAssembly.

Jean-Daniel Dupas devlists at shadowlab.org
Sun Dec 29 12:25:31 PST 2013


http://llvm-reviews.chandlerc.com/D2491

Files:
  include/lldb/Symbol/FuncUnwinders.h
  include/lldb/Symbol/UnwindTable.h
  include/lldb/lldb-forward.h
  source/Symbol/FuncUnwinders.cpp
  source/Symbol/UnwindTable.cpp

Index: include/lldb/Symbol/FuncUnwinders.h
===================================================================
--- include/lldb/Symbol/FuncUnwinders.h
+++ include/lldb/Symbol/FuncUnwinders.h
@@ -31,7 +31,7 @@
     // instructions are finished for migrating breakpoints past the 
     // stack frame setup instructions when we don't have line table information.
 
-    FuncUnwinders (lldb_private::UnwindTable& unwind_table, lldb_private::UnwindAssembly *assembly_profiler, AddressRange range);
+    FuncUnwinders (lldb_private::UnwindTable& unwind_table, const lldb::UnwindAssemblySP& assembly_profiler, AddressRange range);
 
     ~FuncUnwinders ();
 
@@ -77,7 +77,7 @@
 
 private:
     UnwindTable& m_unwind_table;
-    UnwindAssembly *m_assembly_profiler;
+    lldb::UnwindAssemblySP m_assembly_profiler;
     AddressRange m_range;
 
     Mutex m_mutex;
Index: include/lldb/Symbol/UnwindTable.h
===================================================================
--- include/lldb/Symbol/UnwindTable.h
+++ include/lldb/Symbol/UnwindTable.h
@@ -57,7 +57,7 @@
 
     bool                m_initialized;  // delay some initialization until ObjectFile is set up
 
-    UnwindAssembly* m_assembly_profiler;
+    lldb::UnwindAssemblySP m_assembly_profiler;
 
     DWARFCallFrameInfo* m_eh_frame;
     
Index: include/lldb/lldb-forward.h
===================================================================
--- include/lldb/lldb-forward.h
+++ include/lldb/lldb-forward.h
@@ -382,6 +382,7 @@
 #ifndef LLDB_DISABLE_PYTHON
     typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP;
 #endif
+    typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
     typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
     typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
     typedef std::shared_ptr<lldb_private::Value> ValueSP;
Index: source/Symbol/FuncUnwinders.cpp
===================================================================
--- source/Symbol/FuncUnwinders.cpp
+++ source/Symbol/FuncUnwinders.cpp
@@ -28,7 +28,7 @@
 FuncUnwinders::FuncUnwinders
 (
     UnwindTable& unwind_table, 
-    UnwindAssembly *assembly_profiler, 
+    const lldb::UnwindAssemblySP& assembly_profiler,
     AddressRange range
 ) : 
     m_unwind_table(unwind_table), 
Index: source/Symbol/UnwindTable.cpp
===================================================================
--- source/Symbol/UnwindTable.cpp
+++ source/Symbol/UnwindTable.cpp
@@ -57,7 +57,7 @@
     ArchSpec arch;
     if (m_object_file.GetArchitecture (arch))
     {
-        m_assembly_profiler = UnwindAssembly::FindPlugin (arch);
+        m_assembly_profiler.reset(UnwindAssembly::FindPlugin (arch));
         m_initialized = true;
     }
 }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2491.1.patch
Type: text/x-patch
Size: 2772 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20131229/012338ba/attachment.bin>


More information about the lldb-commits mailing list