llvm-symbolizer: don't leave dangling pointers after flushing LLVMSymbolizer. Add...
authorAlexey Samsonov <samsonov@google.com>
Fri, 28 Jun 2013 15:08:29 +0000 (15:08 +0000)
committerAlexey Samsonov <samsonov@google.com>
Fri, 28 Jun 2013 15:08:29 +0000 (15:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185154 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-symbolizer/LLVMSymbolize.cpp
tools/llvm-symbolizer/LLVMSymbolize.h

index 59564161b4e867755669e8e8d675ddca92e55e44..57f34c247291c77db13377208e8796175f92a74b 100644 (file)
@@ -202,6 +202,8 @@ std::string LLVMSymbolizer::symbolizeData(const std::string &ModuleName,
 void LLVMSymbolizer::flush() {
   DeleteContainerSeconds(Modules);
   DeleteContainerPointers(ParsedBinariesAndObjects);
+  BinaryForPath.clear();
+  ObjectFileForArch.clear();
 }
 
 static std::string getDarwinDWARFResourceForPath(const std::string &Path) {
index d1f2285aa8a8cc3bf0f81240e47831921966a2bd..03c765cc9c309a8d6aa282b0f03b4c070bddd1dc 100644 (file)
@@ -48,6 +48,9 @@ public:
   };
 
   LLVMSymbolizer(const Options &Opts = Options()) : Opts(Opts) {}
+  ~LLVMSymbolizer() {
+    flush();
+  }
 
   // Returns the result of symbolization for module name/offset as
   // a string (possibly containing newlines).