Index: llvm/trunk/lib/Fuzzer/FuzzerMutate.h =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerMutate.h +++ llvm/trunk/lib/Fuzzer/FuzzerMutate.h @@ -88,7 +88,7 @@ void ClearAutoDictionary(); void PrintRecommendedDictionary(); - void SetCorpus(const InputCorpus *Corpus) { this->Corpus = Corpus; } + void SetCorpus(InputCorpus *Corpus) { this->Corpus = Corpus; } Random &GetRand() { return Rand; } @@ -141,7 +141,7 @@ DictionaryEntry CmpDictionaryEntriesDeque[kCmpDictionaryEntriesDequeSize]; size_t CmpDictionaryEntriesDequeIdx = 0; - const InputCorpus *Corpus = nullptr; + InputCorpus *Corpus = nullptr; std::vector MutateInPlaceHere; // CustomCrossOver needs its own buffer as a custom implementation may call // LLVMFuzzerMutate, which in turn may resize MutateInPlaceHere. Index: llvm/trunk/lib/Fuzzer/FuzzerMutate.cpp =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerMutate.cpp +++ llvm/trunk/lib/Fuzzer/FuzzerMutate.cpp @@ -77,7 +77,7 @@ size_t MaxSize) { if (!Corpus || Corpus->size() < 2 || Size == 0) return 0; - size_t Idx = Rand(Corpus->size()); + size_t Idx = Corpus->ChooseUnitIdxToMutate(Rand); const Unit &Other = (*Corpus)[Idx]; if (Other.empty()) return 0;