diff options
Diffstat (limited to 'mpz/cmp.c')
-rw-r--r-- | mpz/cmp.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -35,15 +35,15 @@ see https://www.gnu.org/licenses/. */ int mpz_cmp (mpz_srcptr u, mpz_srcptr v) __GMP_NOTHROW { - mp_size_t usize, vsize, dsize, asize; + mp_size_t usize, vsize, asize; mp_srcptr up, vp; int cmp; usize = SIZ(u); vsize = SIZ(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; asize = ABS (usize); up = PTR(u); |