From: Michael J. Spencer Date: Tue, 23 Oct 2012 22:55:54 +0000 (+0000) Subject: [Support/StringSet] Fix memory leak when inserted key already exists. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ce892ca9bc7f9924a69ce6c844e1dff5aa4049e6;p=oota-llvm.git [Support/StringSet] Fix memory leak when inserted key already exists. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166517 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/StringSet.h b/include/llvm/ADT/StringSet.h index 9c55f6b70e3..b69a964a23b 100644 --- a/include/llvm/ADT/StringSet.h +++ b/include/llvm/ADT/StringSet.h @@ -29,8 +29,13 @@ namespace llvm { assert(!InLang.empty()); const char *KeyStart = InLang.data(); const char *KeyEnd = KeyStart + InLang.size(); - return base::insert(llvm::StringMapEntry:: - Create(KeyStart, KeyEnd, base::getAllocator(), '+')); + llvm::StringMapEntry *Entry = llvm::StringMapEntry:: + Create(KeyStart, KeyEnd, base::getAllocator(), '+'); + if (!base::insert(Entry)) { + Entry->Destroy(base::getAllocator()); + return false; + } + return true; } }; }