Index: lib/fuzzer/FuzzerCorpus.h =================================================================== --- lib/fuzzer/FuzzerCorpus.h +++ lib/fuzzer/FuzzerCorpus.h @@ -174,7 +174,7 @@ // Returns an index of random unit from the corpus to mutate. size_t ChooseUnitIdxToMutate(Random &Rand) { - size_t Idx = static_cast(CorpusDistribution(Rand)); + size_t Idx = CorpusDistribution(Rand); assert(Idx < Inputs.size()); return Idx; } @@ -276,9 +276,7 @@ void UpdateCorpusDistribution() { size_t N = Inputs.size(); assert(N); - Intervals.resize(N + 1); Weights.resize(N); - std::iota(Intervals.begin(), Intervals.end(), 0); for (size_t i = 0; i < N; i++) Weights[i] = Inputs[i]->NumFeatures ? (i + 1) * (Inputs[i]->HasFocusFunction ? 1000 : 1) @@ -291,12 +289,11 @@ Printf("%f ", Weights[i]); Printf("Weights\n"); } - CorpusDistribution = std::piecewise_constant_distribution( - Intervals.begin(), Intervals.end(), Weights.begin()); + CorpusDistribution = + std::discrete_distribution(Weights.begin(), Weights.end()); } - std::piecewise_constant_distribution CorpusDistribution; + std::discrete_distribution CorpusDistribution; - Vector Intervals; Vector Weights; std::unordered_set Hashes;