diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-08-20 07:44:49 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-08-20 07:44:49 +0000 |
commit | b7979898ecf162ea205241538ef06b696a861b4e (patch) | |
tree | ce00c50f8fab1454c75d106db62309a5f6e60cbe | |
parent | 73849bcd00d9df0df6fccf31a57bfeaee28ad423 (diff) | |
download | mpfr-b7979898ecf162ea205241538ef06b696a861b4e.tar.gz |
[src/mpfr-impl.h] Added a cast to mp_bitcnt_t in order to fix potential
integer overflow in MPFR_MPZ_SIZEINBASE2.
(merged changeset r12988 from the trunk)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/4.0@12994 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | src/mpfr-impl.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/mpfr-impl.h b/src/mpfr-impl.h index d4b27bb9a..103d77733 100644 --- a/src/mpfr-impl.h +++ b/src/mpfr-impl.h @@ -1415,15 +1415,15 @@ do { \ #define mpfr_get_d1(x) mpfr_get_d(x,__gmpfr_default_rounding_mode) /* Store in r the size in bits of the mpz_t z */ -#define MPFR_MPZ_SIZEINBASE2(r, z) \ - do { \ - int _cnt; \ - mp_size_t _size; \ - MPFR_ASSERTD (mpz_sgn (z) != 0); \ - _size = ABSIZ(z); \ - MPFR_ASSERTD (_size >= 1); \ - count_leading_zeros (_cnt, PTR(z)[_size-1]); \ - (r) = _size * GMP_NUMB_BITS - _cnt; \ +#define MPFR_MPZ_SIZEINBASE2(r, z) \ + do { \ + int _cnt; \ + mp_size_t _size; \ + MPFR_ASSERTD (mpz_sgn (z) != 0); \ + _size = ABSIZ(z); \ + MPFR_ASSERTD (_size >= 1); \ + count_leading_zeros (_cnt, PTR(z)[_size-1]); \ + (r) = (mp_bitcnt_t) _size * GMP_NUMB_BITS - _cnt; \ } while (0) /* MPFR_LCONV_DPTS can also be forced to 0 or 1 by the user. */ |