aboutsummaryrefslogtreecommitdiffhomepage
path: root/fuzz/Fuzz.h
diff options
context:
space:
mode:
authorGravatar Kevin Lubick <kjlubick@google.com>2016-11-14 08:32:03 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-14 17:27:38 +0000
commitfb0ce926e6c95e2d56c654b88777cbe8916ba73f (patch)
tree5766948d576128a532be3c39a71e493f19f8bc38 /fuzz/Fuzz.h
parentfa26e66259d7f4f98d73acd718cccb894743a437 (diff)
Properly handle INT_MIN and related
BUG=skia:5967 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4751 Change-Id: Ie846560ebdaf11e1a5247842b3549ade1e100af2 Reviewed-on: https://skia-review.googlesource.com/4751 Reviewed-by: Kevin Lubick <kjlubick@google.com> Commit-Queue: Kevin Lubick <kjlubick@google.com>
Diffstat (limited to 'fuzz/Fuzz.h')
-rw-r--r--fuzz/Fuzz.h18
1 files changed, 9 insertions, 9 deletions
diff --git a/fuzz/Fuzz.h b/fuzz/Fuzz.h
index 5cc8bd21d8..559addb7cf 100644
--- a/fuzz/Fuzz.h
+++ b/fuzz/Fuzz.h
@@ -99,15 +99,15 @@ inline void Fuzz::nextRange(T* n, Min min, Max max) {
if (0 == range) {
return;
} else {
- if (*n < 0) {
- *n = *n * -1;
- }
- if (*n < 0) {
- // abs(INT_MIN) = INT_MIN, so we check this to avoid accidental negatives.
- *n = min;
- return;
- }
- *n = min + *n % range;
+ 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);
}
}