diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-09-18 01:47:06 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-09-18 01:47:06 +0000 |
commit | b5aa431a835fcd5b46e8b36e72ad41faabd38a4d (patch) | |
tree | e360308147b06cf22762be0bf380758f9f4913c9 /tests | |
parent | 90a026e681ec0fbabdafe56c1f224c8d60a77424 (diff) | |
download | mpfr-b5aa431a835fcd5b46e8b36e72ad41faabd38a4d.tar.gz |
[tests/random2.c] Avoid undefined behavior on shift count.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@13219 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests')
-rw-r--r-- | tests/random2.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/tests/random2.c b/tests/random2.c index 463897f15..2db924ed1 100644 --- a/tests/random2.c +++ b/tests/random2.c @@ -97,18 +97,19 @@ mpfr_random2 (mpfr_ptr x, mp_size_t size, mpfr_exp_t exp, nb = (ran >> 1) % (1 << LOGBITS_PER_BLOCK) + 1; if ((ran & 1) != 0) { + MPFR_ASSERTN (bit_pos < GMP_NUMB_BITS); /* Generate a string of nb ones. */ if (nb > bit_pos) { xp[ri--] = acc | MPFR_LIMB_MASK (bit_pos + 1); bit_pos += GMP_NUMB_BITS; bit_pos -= nb; - acc = MPFR_LIMB_LSHIFT (MPFR_LIMB_MAX, bit_pos + 1); + acc = MPFR_LIMB_LSHIFT (MPFR_LIMB_MAX << 1, bit_pos); } else { bit_pos -= nb; - acc |= MPFR_LIMB_LSHIFT (MPFR_LIMB_MASK (nb), bit_pos + 1); + acc |= MPFR_LIMB_LSHIFT (MPFR_LIMB_MASK (nb) << 1, bit_pos); } } else |