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)
llvm-svn: 185154

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

index 5956416..57f34c2 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 d1f2285..03c765c 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).