diff options
Diffstat (limited to 'mpi-patches')
-rw-r--r-- | mpi-patches/add-mp-set-intptr | 22 | ||||
-rw-r--r-- | mpi-patches/fix-mult-bug | 13 | ||||
-rw-r--r-- | mpi-patches/mpi-set-double-intptr | 10 |
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); |