]> granicus.if.org Git - clang/commitdiff
unique_ptrify thep passing of BugReports to BugReportEquivClass
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 29 Aug 2014 19:57:52 +0000 (19:57 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 29 Aug 2014 19:57:52 +0000 (19:57 +0000)
I suspect llvm::ilist should take elements by unique_ptr, since it does
take ownership of the element (by stitching it into the linked list) -
one day.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216761 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
lib/StaticAnalyzer/Core/BugReporter.cpp

index 3e1745e840d1d464e241d46b2e9b642055f3f942..54a0fb45414f5dff1b63a37ea2509d694dc9451b 100644 (file)
@@ -345,9 +345,12 @@ class BugReportEquivClass : public llvm::FoldingSetNode {
   llvm::ilist<BugReport> Reports;
 
   friend class BugReporter;
-  void AddReport(BugReport* R) { Reports.push_back(R); }
+  void AddReport(std::unique_ptr<BugReport> R) {
+    Reports.push_back(R.release());
+  }
+
 public:
-  BugReportEquivClass(BugReport* R) { Reports.push_back(R); }
+  BugReportEquivClass(std::unique_ptr<BugReport> R) { AddReport(std::move(R)); }
   ~BugReportEquivClass();
 
   void Profile(llvm::FoldingSetNodeID& ID) const {
index 89fd8d3e1b1db85252a3546759ece31747312f66..f01fc7967716b72d3e79d5b401a2031ceb6a4884 100644 (file)
@@ -3278,12 +3278,11 @@ void BugReporter::emitReport(BugReport* R) {
   BugReportEquivClass* EQ = EQClasses.FindNodeOrInsertPos(ID, InsertPos);
 
   if (!EQ) {
-    EQ = new BugReportEquivClass(UniqueR.release());
+    EQ = new BugReportEquivClass(std::move(UniqueR));
     EQClasses.InsertNode(EQ, InsertPos);
     EQClassesVector.push_back(EQ);
-  }
-  else
-    EQ->AddReport(UniqueR.release());
+  } else
+    EQ->AddReport(std::move(UniqueR));
 }