Mercurial > hg
view contrib/fuzz/fuzzutil.cc @ 39208:362c4603602d
zsh_completion: update all options
It's just too hard to further split this patch. What it does:
- adds missing flags
- removes flags that are no longer there
- updates flag descriptions and argument names
- adds * where using the same option many times is okay
- groups with () mutually exclusive flags that can't be used together
- adds + and = to options that need arguments
- removes + and = from options that don't take any arguments
- fixes minor issues and a typo
Differential Revision: https://phab.mercurial-scm.org/D4267
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Fri, 10 Aug 2018 23:24:33 +0800 |
parents | a1c0873a9990 |
children |
line wrap: on
line source
#include "fuzzutil.h" #include <cstring> #include <utility> contrib::optional<two_inputs> SplitInputs(const uint8_t *Data, size_t Size) { if (!Size) { return contrib::nullopt; } // figure out a random point in [0, Size] to split our input. size_t left_size = (Data[0] / 255.0) * (Size - 1); // Copy inputs to new allocations so if bdiff over-reads // AddressSanitizer can detect it. std::unique_ptr<char[]> left(new char[left_size]); std::memcpy(left.get(), Data + 1, left_size); // right starts at the next byte after left ends size_t right_size = Size - (left_size + 1); std::unique_ptr<char[]> right(new char[right_size]); std::memcpy(right.get(), Data + 1 + left_size, right_size); LOG(2) << "inputs are " << left_size << " and " << right_size << " bytes" << std::endl; two_inputs result = {std::move(right), right_size, std::move(left), left_size}; return result; }