diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-06-14 21:48:00 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-06-14 21:48:00 (GMT) |
commit | 15e17d01d57f28aa3ccb9adcc344937c4b5a34e0 (patch) | |
tree | 80050a4af1fcd9e60dbc7cf57462a7ed505974c9 /libtommath/bn_mp_grow.c | |
parent | e69d76af16939ec4327b1793f8a2cb358a141972 (diff) | |
parent | db7fa65dce753b80d5f2a87799aabd481e9144a2 (diff) | |
download | tcl-15e17d01d57f28aa3ccb9adcc344937c4b5a34e0.zip tcl-15e17d01d57f28aa3ccb9adcc344937c4b5a34e0.tar.gz tcl-15e17d01d57f28aa3ccb9adcc344937c4b5a34e0.tar.bz2 |
Latest libtommath's "develop" branch adapted for Tcl 8.6. And Tcl 8.6 adapted for changes in libtommath
Diffstat (limited to 'libtommath/bn_mp_grow.c')
-rw-r--r-- | libtommath/bn_mp_grow.c | 32 |
1 files changed, 7 insertions, 25 deletions
diff --git a/libtommath/bn_mp_grow.c b/libtommath/bn_mp_grow.c index b120194..9e904c5 100644 --- a/libtommath/bn_mp_grow.c +++ b/libtommath/bn_mp_grow.c @@ -1,37 +1,25 @@ #include "tommath_private.h" #ifdef BN_MP_GROW_C -/* LibTomMath, multiple-precision integer library -- Tom St Denis - * - * LibTomMath is a library that provides multiple-precision - * integer arithmetic as well as number theoretic functionality. - * - * The library was designed directly after the MPI library by - * Michael Fromberger but has been written from scratch with - * additional optimizations in place. - * - * SPDX-License-Identifier: Unlicense - */ +/* LibTomMath, multiple-precision integer library -- Tom St Denis */ +/* SPDX-License-Identifier: Unlicense */ /* grow as required */ -int mp_grow(mp_int *a, int size) +mp_err mp_grow(mp_int *a, int size) { int i; mp_digit *tmp; /* if the alloc size is smaller alloc more ram */ if (a->alloc < size) { - /* ensure there are always at least MP_PREC digits extra on top */ - size += (MP_PREC * 2) - (size % MP_PREC); - /* reallocate the array a->dp * * We store the return in a temporary variable * in case the operation failed we don't want * to overwrite the dp member of a. */ - tmp = (mp_digit *) XREALLOC(a->dp, - (size_t)a->alloc * sizeof (mp_digit), - (size_t)size * sizeof(mp_digit)); + tmp = (mp_digit *) MP_REALLOC(a->dp, + (size_t)a->alloc * sizeof(mp_digit), + (size_t)size * sizeof(mp_digit)); if (tmp == NULL) { /* reallocation failed but "a" is still valid [can be freed] */ return MP_MEM; @@ -43,14 +31,8 @@ int mp_grow(mp_int *a, int size) /* zero excess digits */ i = a->alloc; a->alloc = size; - for (; i < a->alloc; i++) { - a->dp[i] = 0; - } + MP_ZERO_DIGITS(a->dp + i, a->alloc - i); } return MP_OKAY; } #endif - -/* ref: $Format:%D$ */ -/* git commit: $Format:%H$ */ -/* commit time: $Format:%ai$ */ |