Avoid a memory leak in JITDebugRegisterer.
authorJeffrey Yasskin <jyasskin@google.com>
Tue, 16 Mar 2010 05:54:54 +0000 (05:54 +0000)
committerJeffrey Yasskin <jyasskin@google.com>
Tue, 16 Mar 2010 05:54:54 +0000 (05:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98612 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp

index 565509cd1f362565cba4f0303bef3fc8dbfb19e4..68471bd4d5f43361859e69fa38a707bbe00f14a2 100644 (file)
@@ -165,7 +165,7 @@ void JITDebugRegisterer::RegisterFunction(const Function *F, DebugInfo &I) {
 
 void JITDebugRegisterer::UnregisterFunctionInternal(
     RegisteredFunctionsMap::iterator I) {
-  jit_code_entry *JITCodeEntry = I->second.second;
+  jit_code_entry *&JITCodeEntry = I->second.second;
 
   // Acquire the lock and do the unregistration.
   {
@@ -190,6 +190,9 @@ void JITDebugRegisterer::UnregisterFunctionInternal(
     __jit_debug_register_code();
   }
 
+  delete JITCodeEntry;
+  JITCodeEntry = NULL;
+
   // Free the ELF file in memory.
   std::string &Buffer = I->second.first;
   Buffer.clear();