aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--fuzz/Fuzz.h25
-rw-r--r--fuzz/FuzzParsePath.cpp4
2 files changed, 14 insertions, 15 deletions
diff --git a/fuzz/Fuzz.h b/fuzz/Fuzz.h
index 559addb7cf..8abbb2276a 100644
--- a/fuzz/Fuzz.h
+++ b/fuzz/Fuzz.h
@@ -95,20 +95,19 @@ inline void Fuzz::nextRange(float* f, float min, float max) {
template <typename T, typename Min, typename Max>
inline void Fuzz::nextRange(T* n, Min min, Max max) {
this->next<T>(n);
- T range = max - min + 1;
- if (0 == range) {
- return;
- } else {
- if (*n < 0) { // Handle negatives
- if (*n != std::numeric_limits<T>::lowest()) {
- *n *= -1;
- }
- else {
- *n = std::numeric_limits<T>::max();
- }
- }
- *n = min + (*n % range);
+ if (min >= max) {
+ // Avoid misuse of nextRange
+ this->signalBug();
+ }
+ if (*n < 0) { // Handle negatives
+ if (*n != std::numeric_limits<T>::lowest()) {
+ *n *= -1;
+ }
+ else {
+ *n = std::numeric_limits<T>::max();
+ }
}
+ *n = min + (*n % ((size_t)max - min + 1));
}
template <typename T>
diff --git a/fuzz/FuzzParsePath.cpp b/fuzz/FuzzParsePath.cpp
index 90b99ca8e5..b9d7f6b418 100644
--- a/fuzz/FuzzParsePath.cpp
+++ b/fuzz/FuzzParsePath.cpp
@@ -45,7 +45,7 @@ static void add_white(Fuzz* fuzz, SkString* atom) {
fuzz->nextRange(&reps, 0, 2);
for (uint8_t rep = 0; rep < reps; ++rep) {
uint8_t index;
- fuzz->nextRange(&index, 0, SK_ARRAY_COUNT(gWhiteSpace) - 1);
+ fuzz->nextRange(&index, 0, (int) SK_ARRAY_COUNT(gWhiteSpace) - 1);
if (gWhiteSpace[index]) {
atom->append(&gWhiteSpace[index], 1);
}
@@ -75,7 +75,7 @@ static void add_comma(Fuzz* fuzz, SkString* atom) {
SkString MakeRandomParsePathPiece(Fuzz* fuzz) {
SkString atom;
uint8_t index;
- fuzz->nextRange(&index, 0, SK_ARRAY_COUNT(gLegal) - 1);
+ fuzz->nextRange(&index, 0, (int) SK_ARRAY_COUNT(gLegal) - 1);
const Legal& legal = gLegal[index];
gEasy ? atom.append("\n") : add_white(fuzz, &atom);
bool b;