From: Mike Aizatsky Date: Tue, 15 Mar 2016 21:47:21 +0000 (+0000) Subject: [libfuzzer] speeding up corpus load X-Git-Tag: llvmorg-3.9.0-rc1~11649 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=298516ffa97e5cc292fc3a0bfd21054fd677a354;p=platform%2Fupstream%2Fllvm.git [libfuzzer] speeding up corpus load llvm-svn: 263591 --- diff --git a/llvm/lib/Fuzzer/FuzzerIO.cpp b/llvm/lib/Fuzzer/FuzzerIO.cpp index 3fa6721..be7759f 100644 --- a/llvm/lib/Fuzzer/FuzzerIO.cpp +++ b/llvm/lib/Fuzzer/FuzzerIO.cpp @@ -61,14 +61,16 @@ Unit FileToVector(const std::string &Path, size_t MaxSize) { Printf("No such directory: %s; exiting\n", Path.c_str()); exit(1); } - if (MaxSize) { - Unit Res(MaxSize); - T.read(reinterpret_cast(Res.data()), MaxSize); - Res.resize(T.gcount()); - return Res; - } - return Unit((std::istreambuf_iterator(T)), - std::istreambuf_iterator()); + + T.seekg(0, T.end); + size_t FileLen = T.tellg(); + if (MaxSize) + FileLen = std::min(FileLen, MaxSize); + + T.seekg(0, T.beg); + Unit Res(FileLen); + T.read(reinterpret_cast(Res.data()), FileLen); + return Res; } std::string FileToString(const std::string &Path) {