diff options
author | Kevin Lubick <kjlubick@google.com> | 2016-11-14 08:32:03 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-14 17:27:38 +0000 |
commit | fb0ce926e6c95e2d56c654b88777cbe8916ba73f (patch) | |
tree | 5766948d576128a532be3c39a71e493f19f8bc38 | |
parent | fa26e66259d7f4f98d73acd718cccb894743a437 (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>
-rw-r--r-- | fuzz/Fuzz.h | 18 |
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); } } |