[llvm-commits] [llvm] r166517 - /llvm/trunk/include/llvm/ADT/StringSet.h

Michael J. Spencer bigcheesegs at gmail.com
Tue Oct 23 15:55:54 PDT 2012


Author: mspencer
Date: Tue Oct 23 17:55:54 2012
New Revision: 166517

URL: http://llvm.org/viewvc/llvm-project?rev=166517&view=rev
Log:
[Support/StringSet] Fix memory leak when inserted key already exists.

Modified:
    llvm/trunk/include/llvm/ADT/StringSet.h

Modified: llvm/trunk/include/llvm/ADT/StringSet.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringSet.h?rev=166517&r1=166516&r2=166517&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/StringSet.h (original)
+++ llvm/trunk/include/llvm/ADT/StringSet.h Tue Oct 23 17:55:54 2012
@@ -29,8 +29,13 @@
       assert(!InLang.empty());
       const char *KeyStart = InLang.data();
       const char *KeyEnd = KeyStart + InLang.size();
-      return base::insert(llvm::StringMapEntry<char>::
-                          Create(KeyStart, KeyEnd, base::getAllocator(), '+'));
+      llvm::StringMapEntry<char> *Entry = llvm::StringMapEntry<char>::
+                            Create(KeyStart, KeyEnd, base::getAllocator(), '+');
+      if (!base::insert(Entry)) {
+        Entry->Destroy(base::getAllocator());
+        return false;
+      }
+      return true;
     }
   };
 }





More information about the llvm-commits mailing list