diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2020-03-26 17:09:28 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2020-03-26 17:09:28 +0000 |
commit | e3dcaaf0d9e206b0acd9597622c6d3d423cb5ed5 (patch) | |
tree | 6f1103860b8da012e4c1302ea8fb329ee4185b71 /src/rem1.c | |
parent | ee1e3b9bb8484d2d844f4b3383365c9387d6bac6 (diff) | |
download | mpfr-e3dcaaf0d9e206b0acd9597622c6d3d423cb5ed5.tar.gz |
[src] Portability fixes. Avoid a potential integer overflow with huge
precisions.
(merged changesets r13792-13793,13795 from the trunk)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/4.0@13828 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/rem1.c')
-rw-r--r-- | src/rem1.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/rem1.c b/src/rem1.c index 3a7173c24..0ac742749 100644 --- a/src/rem1.c +++ b/src/rem1.c @@ -100,9 +100,11 @@ mpfr_rem1 (mpfr_ptr rem, long *quo, mpfr_rnd_t rnd_q, mpz_abs (my, my); q_is_odd = 0; - /* divide my by 2^k if possible to make operations mod my easier */ + /* Divide my by 2^k if possible to make operations mod my easier. + Since my comes from a regular MPFR number, due to the constraints on the + exponent and the precision, there can be no integer overflow below. */ { - unsigned long k = mpz_scan1 (my, 0); + mpfr_exp_t k = mpz_scan1 (my, 0); ey += k; mpz_fdiv_q_2exp (my, my, k); } |