diff --git a/src/util/mpz.cpp b/src/util/mpz.cpp index 00fecdc59c..026b88732f 100644 --- a/src/util/mpz.cpp +++ b/src/util/mpz.cpp @@ -38,6 +38,7 @@ static bool mul_overflows(int64_t a, int64_t b, int64_t & result) { // Overflow if high bits are not the sign extension of result return high != (result >> 63); #elif defined(_MSC_VER) + // Extract magnitudes without ever evaluating -INT64_MIN. uint64_t x = a < 0 ? static_cast(-(a + 1)) + 1 : static_cast(a); uint64_t y = b < 0 ? static_cast(-(b + 1)) + 1 : static_cast(b); bool is_neg = (a < 0) != (b < 0);