summaryrefslogtreecommitdiffstats
path: root/mpi-patches
diff options
context:
space:
mode:
Diffstat (limited to 'mpi-patches')
-rw-r--r--mpi-patches/add-mp-set-intptr22
-rw-r--r--mpi-patches/fix-mult-bug13
-rw-r--r--mpi-patches/mpi-set-double-intptr10
3 files changed, 27 insertions, 18 deletions
diff --git a/mpi-patches/add-mp-set-intptr b/mpi-patches/add-mp-set-intptr
index a5d50a33..87e4ebb4 100644
--- a/mpi-patches/add-mp-set-intptr
+++ b/mpi-patches/add-mp-set-intptr
@@ -1,16 +1,17 @@
Index: mpi-1.8.6/mpi.c
===================================================================
---- mpi-1.8.6.orig/mpi.c 2011-12-09 13:52:26.000000000 -0800
-+++ mpi-1.8.6/mpi.c 2011-12-09 13:56:19.000000000 -0800
+--- mpi-1.8.6.orig/mpi.c 2011-12-10 18:20:55.000000000 -0800
++++ mpi-1.8.6/mpi.c 2011-12-10 19:40:53.000000000 -0800
@@ -528,6 +528,59 @@
/* }}} */
+mp_err mp_set_intptr(mp_int *mp, int_ptr_t z)
+{
++ int_ptr_t v = z > 0 ? z : -z;
++
+ if (sizeof z > sizeof (mp_digit)) {
+ int ix, shift;
-+ unsigned long v = z > 0 ? z : -z;
+ const int nd = (sizeof v + sizeof (mp_digit) - 1) / sizeof (mp_digit);
+
+ ARGCHK(mp != NULL, MP_BADARG);
@@ -28,14 +29,13 @@ Index: mpi-1.8.6/mpi.c
+ {
+ DIGIT(mp, ix) = (v >> shift) & MP_DIGIT_MAX;
+ }
-+
-+ if(z < 0)
-+ SIGN(mp) = MP_NEG;
-+
-+ return MP_OKAY;
++ } else {
++ mp_set(mp, v);
+ }
+
-+ mp_set(mp, z);
++ if(z < 0)
++ SIGN(mp) = MP_NEG;
++
+ return MP_OKAY;
+}
+
@@ -64,8 +64,8 @@ Index: mpi-1.8.6/mpi.c
Index: mpi-1.8.6/mpi.h
===================================================================
---- mpi-1.8.6.orig/mpi.h 2011-12-09 13:49:20.000000000 -0800
-+++ mpi-1.8.6/mpi.h 2011-12-09 13:56:19.000000000 -0800
+--- mpi-1.8.6.orig/mpi.h 2011-12-10 18:19:39.000000000 -0800
++++ mpi-1.8.6/mpi.h 2011-12-10 19:39:58.000000000 -0800
@@ -94,6 +94,8 @@
void mp_zero(mp_int *mp);
void mp_set(mp_int *mp, mp_digit d);
diff --git a/mpi-patches/fix-mult-bug b/mpi-patches/fix-mult-bug
index e86d0363..bb8b0f0d 100644
--- a/mpi-patches/fix-mult-bug
+++ b/mpi-patches/fix-mult-bug
@@ -1,7 +1,7 @@
Index: mpi-1.8.6/mpi.c
===================================================================
---- mpi-1.8.6.orig/mpi.c 2011-12-10 12:05:39.000000000 -0800
-+++ mpi-1.8.6/mpi.c 2011-12-10 12:05:43.000000000 -0800
+--- mpi-1.8.6.orig/mpi.c 2011-12-10 19:41:00.000000000 -0800
++++ mpi-1.8.6/mpi.c 2011-12-10 19:43:09.000000000 -0800
@@ -3263,7 +3263,7 @@
}
@@ -11,3 +11,12 @@ Index: mpi-1.8.6/mpi.c
dp[ix] = ACCUM(w);
k = CARRYOUT(w);
}
+@@ -3480,7 +3480,7 @@
+ pa = DIGITS(a);
+ for(jx = 0; jx < ua; ++jx, ++pa) {
+ pt = pbt + ix + jx;
+- w = *pb * *pa + k + *pt;
++ w = *pb * (mp_word) *pa + k + *pt;
+ *pt = ACCUM(w);
+ k = CARRYOUT(w);
+ }
diff --git a/mpi-patches/mpi-set-double-intptr b/mpi-patches/mpi-set-double-intptr
index 1c834966..fb5dc52c 100644
--- a/mpi-patches/mpi-set-double-intptr
+++ b/mpi-patches/mpi-set-double-intptr
@@ -1,7 +1,7 @@
Index: mpi-1.8.6/mpi.c
===================================================================
---- mpi-1.8.6.orig/mpi.c 2011-12-10 18:21:53.000000000 -0800
-+++ mpi-1.8.6/mpi.c 2011-12-10 18:24:07.000000000 -0800
+--- mpi-1.8.6.orig/mpi.c 2011-12-10 19:13:25.000000000 -0800
++++ mpi-1.8.6/mpi.c 2011-12-10 19:16:43.000000000 -0800
@@ -573,6 +573,36 @@
return MP_OKAY;
}
@@ -10,7 +10,7 @@ Index: mpi-1.8.6/mpi.c
+mp_err mp_set_double_intptr(mp_int *mp, double_intptr_t z)
+{
+ int ix, shift;
-+ unsigned long v = z > 0 ? z : -z;
++ double_intptr_t v = z > 0 ? z : -z;
+ const int nd = (sizeof v + sizeof (mp_digit) - 1) / sizeof (mp_digit);
+
+ ARGCHK(mp != NULL, MP_BADARG);
@@ -41,8 +41,8 @@ Index: mpi-1.8.6/mpi.c
USED(mp) = 2;
Index: mpi-1.8.6/mpi.h
===================================================================
---- mpi-1.8.6.orig/mpi.h 2011-12-10 18:21:53.000000000 -0800
-+++ mpi-1.8.6/mpi.h 2011-12-10 18:22:56.000000000 -0800
+--- mpi-1.8.6.orig/mpi.h 2011-12-10 19:13:25.000000000 -0800
++++ mpi-1.8.6/mpi.h 2011-12-10 19:14:04.000000000 -0800
@@ -100,6 +100,9 @@
mp_err mp_set_int(mp_int *mp, long z);
mp_err mp_set_intptr(mp_int *mp, int_ptr_t z);