patches/gmp/4.3.1/100-multiplicity-that-does-not-fit-an-int.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Sep 07 01:22:37 2011 +0200 (2011-09-07)
branch1.12
changeset 2655 3ba359965eb0
permissions -rw-r--r--
scripts: fix sysroot prefix dir

The sysroot prefix dir was broken in #4960f5d9f829 due to a mishap
when making the out-of-sysroot lib/ symlink: the './' was mistakenly
changed into a single '.' .

Although Jonathan suggested restoring the missing '/' to restore it to
normal operation, I prefered using an explicit pushd/popd to be extra
sure of the symlink location and target, along with a fix in the sysroot
relative directory calculation.

Reported-by: Jonathan Grundon <JGrundon@xos.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
(transplanted from e5fc5c9ea78af28d05244ba09cf718cf75470903)
yann@1440
     1
diff --git a/mpz/remove.c b/mpz/remove.c
yann@1440
     2
--- a/mpz/remove.c
yann@1440
     3
+++ b/mpz/remove.c
yann@1440
     4
@@ -23,7 +23,7 @@
yann@1440
     5
 unsigned long int
yann@1440
     6
 mpz_remove (mpz_ptr dest, mpz_srcptr src, mpz_srcptr f)
yann@1440
     7
 {
yann@1440
     8
-  mpz_t fpow[40];		/* inexhaustible...until year 2020 or so */
yann@1440
     9
+  mpz_t fpow[GMP_LIMB_BITS];		/* Really MP_SIZE_T_BITS */
yann@1440
    10
   mpz_t x, rem;
yann@1440
    11
   unsigned long int pwr;
yann@1440
    12
   int p;
yann@1440
    13
@@ -69,7 +69,7 @@
yann@1440
    14
       mpz_set (dest, x);
yann@1440
    15
     }
yann@1440
    16
 
yann@1440
    17
-  pwr = (1 << p) - 1;
yann@1440
    18
+  pwr = (1L << p) - 1;
yann@1440
    19
 
yann@1440
    20
   mpz_clear (fpow[p]);
yann@1440
    21
 
yann@1440
    22
diff --git a/mpz/remove.c b/mpz/remove.c
yann@1440
    23
--- a/mpz/remove.c
yann@1440
    24
+++ b/mpz/remove.c
yann@1440
    25
@@ -80,7 +80,7 @@
yann@1440
    26
       mpz_tdiv_qr (x, rem, dest, fpow[p]);
yann@1440
    27
       if (SIZ (rem) == 0)
yann@1440
    28
 	{
yann@1440
    29
-	  pwr += 1 << p;
yann@1440
    30
+	  pwr += 1L << p;
yann@1440
    31
 	  mpz_set (dest, x);
yann@1440
    32
 	}
yann@1440
    33
       mpz_clear (fpow[p]);