LLVM  4.0.0
circular_raw_ostream.cpp
Go to the documentation of this file.
1 //===- circular_raw_ostream.cpp - Implement circular_raw_ostream ----------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This implements support for circular buffered streams.
11 //
12 //===----------------------------------------------------------------------===//
13 
15 #include <algorithm>
16 using namespace llvm;
17 
18 void circular_raw_ostream::write_impl(const char *Ptr, size_t Size) {
19  if (BufferSize == 0) {
20  TheStream->write(Ptr, Size);
21  return;
22  }
23 
24  // Write into the buffer, wrapping if necessary.
25  while (Size != 0) {
26  unsigned Bytes =
27  std::min(unsigned(Size), unsigned(BufferSize - (Cur - BufferArray)));
28  memcpy(Cur, Ptr, Bytes);
29  Size -= Bytes;
30  Cur += Bytes;
31  if (Cur == BufferArray + BufferSize) {
32  // Reset the output pointer to the start of the buffer.
33  Cur = BufferArray;
34  Filled = true;
35  }
36  }
37 }
38 
40  if (BufferSize != 0) {
41  // Write out the buffer
42  TheStream->write(Banner, std::strlen(Banner));
43  flushBuffer();
44  }
45 }
Maximum length of the test input libFuzzer tries to guess a good value based on the corpus and reports it always prefer smaller inputs during the corpus shuffle When libFuzzer itself reports a bug this exit code will be used If indicates the maximal total time in seconds to run the fuzzer minimizes the provided crash input Use with etc Experimental Use value profile to guide fuzzing Number of simultaneous worker processes to run the jobs If min(jobs, NumberOfCpuCores()/2)\" is used.") FUZZER_FLAG_INT(reload
raw_ostream & write(unsigned char C)
void flushBufferWithBanner()
flushBufferWithBanner - Force output of the buffer along with a small header.
int * Ptr