summaryrefslogtreecommitdiffstats
path: root/libtommath/bn_mp_grow.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-06-14 21:48:00 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-06-14 21:48:00 (GMT)
commit15e17d01d57f28aa3ccb9adcc344937c4b5a34e0 (patch)
tree80050a4af1fcd9e60dbc7cf57462a7ed505974c9 /libtommath/bn_mp_grow.c
parente69d76af16939ec4327b1793f8a2cb358a141972 (diff)
parentdb7fa65dce753b80d5f2a87799aabd481e9144a2 (diff)
downloadtcl-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.c32
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$ */