SpecialCaseList: use std::unique_ptr.
authorPeter Collingbourne <peter@pcc.me.uk>
Thu, 10 Jul 2014 03:55:02 +0000 (03:55 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Thu, 10 Jul 2014 03:55:02 +0000 (03:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212678 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/SpecialCaseList.cpp

index d9921ac69205bb3bdbb7fbb94fc508c0ca5772bc..a81ba23ff6d6e05084ee2af919b7d3af8e4b1f55 100644 (file)
@@ -35,9 +35,7 @@ namespace llvm {
 /// literal strings than Regex.
 struct SpecialCaseList::Entry {
   StringSet<> Strings;
-  Regex *RegEx;
-
-  Entry() : RegEx(nullptr) {}
+  std::unique_ptr<Regex> RegEx;
 
   bool match(StringRef Query) const {
     return Strings.count(Query) || (RegEx && RegEx->match(Query));
@@ -147,23 +145,13 @@ bool SpecialCaseList::parse(const MemoryBuffer *MB, std::string &Error) {
     for (StringMap<std::string>::const_iterator II = I->second.begin(),
                                                 IE = I->second.end();
          II != IE; ++II) {
-      Entries[I->getKey()][II->getKey()].RegEx = new Regex(II->getValue());
+      Entries[I->getKey()][II->getKey()].RegEx.reset(new Regex(II->getValue()));
     }
   }
   return true;
 }
 
-SpecialCaseList::~SpecialCaseList() {
-  for (StringMap<StringMap<Entry> >::iterator I = Entries.begin(),
-                                              E = Entries.end();
-       I != E; ++I) {
-    for (StringMap<Entry>::const_iterator II = I->second.begin(),
-                                          IE = I->second.end();
-         II != IE; ++II) {
-      delete II->second.RegEx;
-    }
-  }
-}
+SpecialCaseList::~SpecialCaseList() {}
 
 bool SpecialCaseList::inSection(const StringRef Section, const StringRef Query,
                                 const StringRef Category) const {