[PATCH] D32849: Use unique_ptr for fuzzer::InputCorpus::Inputs

Takuto Ikuta via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 4 00:33:38 PDT 2017


takuto.ikuta created this revision.

Introduce unique_ptr for fuzzer::InputCorpush::Inputs.


https://reviews.llvm.org/D32849

Files:
  llvm/lib/Fuzzer/FuzzerCorpus.h


Index: llvm/lib/Fuzzer/FuzzerCorpus.h
===================================================================
--- llvm/lib/Fuzzer/FuzzerCorpus.h
+++ llvm/lib/Fuzzer/FuzzerCorpus.h
@@ -17,7 +17,9 @@
 #include "FuzzerRandom.h"
 #include "FuzzerSHA1.h"
 #include "FuzzerTracePC.h"
+#include "llvm/ADT/STLExtras.h"
 #include <algorithm>
+#include <memory>
 #include <numeric>
 #include <random>
 #include <unordered_set>
@@ -43,26 +45,22 @@
     memset(InputSizesPerFeature, 0, sizeof(InputSizesPerFeature));
     memset(SmallestElementPerFeature, 0, sizeof(SmallestElementPerFeature));
   }
-  ~InputCorpus() {
-    for (auto II : Inputs)
-      delete II;
-  }
   size_t size() const { return Inputs.size(); }
   size_t SizeInBytes() const {
     size_t Res = 0;
-    for (auto II : Inputs)
+    for (const auto& II : Inputs)
       Res += II->U.size();
     return Res;
   }
   size_t NumActiveUnits() const {
     size_t Res = 0;
-    for (auto II : Inputs)
+    for (const auto& II : Inputs)
       Res += !II->U.empty();
     return Res;
   }
   size_t MaxInputSize() const {
     size_t Res = 0;
-    for (auto II : Inputs)
+    for (const auto& II : Inputs)
         Res = std::max(Res, II->U.size());
     return Res;
   }
@@ -76,7 +74,7 @@
       Printf("ADD_TO_CORPUS %zd NF %zd\n", Inputs.size(), NumFeatures);
     ComputeSHA1(U.data(), U.size(), Hash);
     Hashes.insert(Sha1ToString(Hash));
-    Inputs.push_back(new InputInfo());
+    Inputs.emplace_back(llvm::make_unique<InputInfo>());
     InputInfo &II = *Inputs.back();
     II.U = U;
     II.NumFeatures = NumFeatures;
@@ -179,7 +177,7 @@
     for (size_t Idx = 0; Idx < kFeatureSetSize; Idx++)
       if (GetFeature(Idx))
         Inputs[SmallestElementPerFeature[Idx]]->Tmp++;
-    for (auto II: Inputs) {
+    for (auto& II: Inputs) {
       if (II->Tmp != II->NumFeatures)
         Printf("ZZZ %zd %zd\n", II->Tmp, II->NumFeatures);
       assert(II->Tmp == II->NumFeatures);
@@ -208,7 +206,7 @@
   std::vector<double> Weights;
 
   std::unordered_set<std::string> Hashes;
-  std::vector<InputInfo*> Inputs;
+  std::vector<std::unique_ptr<InputInfo>> Inputs;
 
   bool CountingFeatures = false;
   size_t NumAddedFeatures = 0;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32849.97783.patch
Type: text/x-patch
Size: 2196 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170504/9f75e730/attachment.bin>


More information about the llvm-commits mailing list