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

Matt Beaumont-Gay matthewbg at google.com
Thu Oct 25 18:28:58 PDT 2012


We (Google) have tests which depend on Clang libraries; our heap leak
checker complained, and I eventually managed to get Valgrind to
complain about the same leak when running a Clang unit test binary.

On Thu, Oct 25, 2012 at 11:27 AM, Sean Silva <silvas at purdue.edu> wrote:
> How did you find this?
>
> -- Sean Silva
>
> On Tue, Oct 23, 2012 at 6:55 PM, Michael J. Spencer
> <bigcheesegs at gmail.com> wrote:
>> 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;
>>      }
>>    };
>>  }
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list