diff options
author | kjlubick <kjlubick@google.com> | 2016-07-19 16:50:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-07-19 16:50:03 -0700 |
commit | e565450d0ba81a9869be79664126fd8517dc1632 (patch) | |
tree | 1d8112cd02230a058c477ab071a7e49394b50f2f /fuzz/Fuzz.h | |
parent | e51c356ae4e074b9c286c50a4efce11205f7463c (diff) |
Port FuzzPathop from chromium
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2148023002
Review-Url: https://codereview.chromium.org/2148023002
Diffstat (limited to 'fuzz/Fuzz.h')
-rw-r--r-- | fuzz/Fuzz.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/fuzz/Fuzz.h b/fuzz/Fuzz.h index 07c2c8456e..79bf675f45 100644 --- a/fuzz/Fuzz.h +++ b/fuzz/Fuzz.h @@ -16,6 +16,14 @@ class Fuzz : SkNoncopyable { public: explicit Fuzz(SkData*); + // Returns the total number of "random" bytes available. + size_t size(); + // Returns the total number of "random" bytes remaining for randomness. + size_t remaining(); + + template <typename T> + bool next(T* n); + bool nextBool(); uint8_t nextB(); uint32_t nextU(); @@ -43,6 +51,17 @@ private: int fNextByte; }; +template <typename T> +bool Fuzz::next(T* n) { + if (fNextByte + sizeof(T) > fBytes->size()) { + return false; + } + + memcpy(n, fBytes->bytes() + fNextByte, sizeof(T)); + fNextByte += sizeof(T); + return true; +} + struct Fuzzable { const char* name; void (*fn)(Fuzz*); |