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 +#include #include #include #include @@ -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 &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 Weights; std::unordered_set Hashes; - std::vector Inputs; + std::vector> Inputs; bool CountingFeatures = false; size_t NumAddedFeatures = 0;