aboutsummaryrefslogtreecommitdiffhomepage
path: root/fuzz/FuzzParsePath.cpp
diff options
context:
space:
mode:
authorGravatar Kevin Lubick <kjlubick@google.com>2016-11-01 15:01:12 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-01 19:23:16 +0000
commit2f535cecd0e5a19a3dfb76649b1d90c7e158e24c (patch)
tree685d9bb66afe495239373aeb8a3a86fd1843e6c3 /fuzz/FuzzParsePath.cpp
parent1f49f26353997195030aeab41c8665e1860d2958 (diff)
Make fuzzers use cleaner interface
signalBoring() no longer exists. When the fuzzer runs out of randomness, it just returns 0. Fuzzers should not go into infinite loops if this happens. do while loops are particularly error-prone. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3963 Change-Id: Iebcfc14cc6b0a19c5dd015cd39875c81fa44003e Reviewed-on: https://skia-review.googlesource.com/3963 Commit-Queue: Kevin Lubick <kjlubick@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'fuzz/FuzzParsePath.cpp')
-rw-r--r--fuzz/FuzzParsePath.cpp42
1 files changed, 19 insertions, 23 deletions
diff --git a/fuzz/FuzzParsePath.cpp b/fuzz/FuzzParsePath.cpp
index 6eb7f3b713..1a597d87a0 100644
--- a/fuzz/FuzzParsePath.cpp
+++ b/fuzz/FuzzParsePath.cpp
@@ -39,48 +39,44 @@ static void add_white(Fuzz* fuzz, SkString* atom) {
atom->append(" ");
return;
}
- int reps = fuzz->nextRangeU(0, 2);
+ int reps = fuzz->nextRange(0, 2);
for (int rep = 0; rep < reps; ++rep) {
- int index = fuzz->nextRangeU(0, (int) SK_ARRAY_COUNT(gWhiteSpace) - 1);
+ int index = fuzz->nextRange(0, (int) SK_ARRAY_COUNT(gWhiteSpace) - 1);
if (gWhiteSpace[index]) {
atom->append(&gWhiteSpace[index], 1);
}
}
}
+static void add_some_white(Fuzz* fuzz, SkString* atom) {
+ for(int i = 0; i < 10; i++) {
+ add_white(fuzz, atom);
+ }
+}
+
static void add_comma(Fuzz* fuzz, SkString* atom) {
if (gEasy) {
atom->append(",");
return;
}
- size_t count = atom->size();
add_white(fuzz, atom);
- if (fuzz->nextBool()) {
+ if (fuzz->next<bool>()) {
atom->append(",");
}
- do {
- add_white(fuzz, atom);
- } while (count == atom->size());
-}
-
-static void add_some_white(Fuzz* fuzz, SkString* atom) {
- size_t count = atom->size();
- do {
- add_white(fuzz, atom);
- } while (count == atom->size());
+ add_some_white(fuzz, atom);
}
SkString MakeRandomParsePathPiece(Fuzz* fuzz) {
SkString atom;
- int index = fuzz->nextRangeU(0, (int) SK_ARRAY_COUNT(gLegal) - 1);
+ int index = fuzz->nextRange(0, (int) SK_ARRAY_COUNT(gLegal) - 1);
const Legal& legal = gLegal[index];
gEasy ? atom.append("\n") : add_white(fuzz, &atom);
- char symbol = legal.fSymbol | (fuzz->nextBool() ? 0x20 : 0);
+ char symbol = legal.fSymbol | (fuzz->next<bool>() ? 0x20 : 0);
atom.append(&symbol, 1);
- int reps = fuzz->nextRangeU(1, 3);
+ int reps = fuzz->nextRange(1, 3);
for (int rep = 0; rep < reps; ++rep) {
for (int index = 0; index < legal.fScalars; ++index) {
- SkScalar coord = fuzz->nextRangeF(0, 100);
+ SkScalar coord = fuzz->nextRange(0.0f, 100.0f);
add_white(fuzz, &atom);
atom.appendScalar(coord);
if (rep < reps - 1 && index < legal.fScalars - 1) {
@@ -89,11 +85,11 @@ SkString MakeRandomParsePathPiece(Fuzz* fuzz) {
add_some_white(fuzz, &atom);
}
if ('A' == legal.fSymbol && 1 == index) {
- atom.appendScalar(fuzz->nextRangeF(-720, 720));
+ atom.appendScalar(fuzz->nextRange(-720.0f, 720.0f));
add_comma(fuzz, &atom);
- atom.appendU32(fuzz->nextRangeU(0, 1));
+ atom.appendU32(fuzz->nextRange(0, 1));
add_comma(fuzz, &atom);
- atom.appendU32(fuzz->nextRangeU(0, 1));
+ atom.appendU32(fuzz->nextRange(0, 1));
add_comma(fuzz, &atom);
}
}
@@ -104,12 +100,12 @@ SkString MakeRandomParsePathPiece(Fuzz* fuzz) {
DEF_FUZZ(ParsePath, fuzz) {
SkPath path;
SkString spec;
- uint32_t count = fuzz->nextRangeU(0, 40);
+ uint32_t count = fuzz->nextRange(0, 40);
for (uint32_t i = 0; i < count; ++i) {
spec.append(MakeRandomParsePathPiece(fuzz));
}
SkDebugf("SkParsePath::FromSVGString(%s, &path);\n",spec.c_str());
if (!SkParsePath::FromSVGString(spec.c_str(), &path)){
- fuzz->signalBug();
+ SkDebugf("Could not decode path\n");
}
}