diff options
Diffstat (limited to 'mpz/cmpabs.c')
-rw-r--r-- | mpz/cmpabs.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/mpz/cmpabs.c b/mpz/cmpabs.c index 14f0dc95c..fb1ddc9d8 100644 --- a/mpz/cmpabs.c +++ b/mpz/cmpabs.c @@ -36,15 +36,15 @@ see https://www.gnu.org/licenses/. */ int mpz_cmpabs (mpz_srcptr u, mpz_srcptr v) __GMP_NOTHROW { - mp_size_t usize, vsize, dsize; + mp_size_t usize, vsize; mp_srcptr up, vp; int cmp; usize = ABSIZ (u); vsize = ABSIZ (v); - dsize = usize - vsize; - if (dsize != 0) - return dsize; + /* Cannot use usize - vsize, may overflow an "int" */ + if (usize != vsize) + return (usize > vsize) ? 1 : -1; up = PTR(u); vp = PTR(v); |