Merge pull request #192 from libtom/alloc-sizes
allocation functions: pass size to XREALLOC and XFREE
This commit is contained in:
commit
05137105b4
@ -25,7 +25,7 @@ void mp_clear(mp_int *a)
|
||||
}
|
||||
|
||||
/* free ram */
|
||||
XFREE(a->dp);
|
||||
XFREE(a->dp, sizeof (mp_digit) * (size_t)a->alloc);
|
||||
|
||||
/* reset members to make debugging easier */
|
||||
a->dp = NULL;
|
||||
|
@ -28,18 +28,18 @@ int mp_fwrite(const mp_int *a, int radix, FILE *stream)
|
||||
}
|
||||
|
||||
if ((err = mp_toradix(a, buf, radix)) != MP_OKAY) {
|
||||
XFREE(buf);
|
||||
XFREE(buf, len);
|
||||
return err;
|
||||
}
|
||||
|
||||
for (x = 0; x < len; x++) {
|
||||
if (fputc((int)buf[x], stream) == EOF) {
|
||||
XFREE(buf);
|
||||
XFREE(buf, len);
|
||||
return MP_VAL;
|
||||
}
|
||||
}
|
||||
|
||||
XFREE(buf);
|
||||
XFREE(buf, len);
|
||||
return MP_OKAY;
|
||||
}
|
||||
#endif
|
||||
|
@ -29,7 +29,9 @@ int mp_grow(mp_int *a, int size)
|
||||
* in case the operation failed we don't want
|
||||
* to overwrite the dp member of a.
|
||||
*/
|
||||
tmp = (mp_digit *) XREALLOC(a->dp, (size_t)size * sizeof(mp_digit));
|
||||
tmp = (mp_digit *) XREALLOC(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;
|
||||
|
@ -123,7 +123,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
|
||||
|
||||
err = MP_OKAY;
|
||||
error:
|
||||
XFREE(tmp);
|
||||
XFREE(tmp, bsize);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,9 @@ int mp_shrink(mp_int *a)
|
||||
}
|
||||
|
||||
if (a->alloc != used) {
|
||||
if ((tmp = (mp_digit *) XREALLOC(a->dp, (size_t)used * sizeof(mp_digit))) == NULL) {
|
||||
if ((tmp = (mp_digit *) XREALLOC(a->dp,
|
||||
(size_t)a->alloc * sizeof (mp_digit),
|
||||
(size_t)used * sizeof(mp_digit))) == NULL) {
|
||||
return MP_MEM;
|
||||
}
|
||||
a->dp = tmp;
|
||||
|
@ -29,14 +29,14 @@ extern "C" {
|
||||
/* define heap macros */
|
||||
#ifndef XMALLOC
|
||||
/* default to libc stuff */
|
||||
# define XMALLOC malloc
|
||||
# define XFREE free
|
||||
# define XREALLOC realloc
|
||||
# define XMALLOC(size) malloc(size)
|
||||
# define XFREE(mem, size) free(mem)
|
||||
# define XREALLOC(mem, oldsize, newsize) realloc(mem, newsize)
|
||||
#else
|
||||
/* prototypes for our heap functions */
|
||||
extern void *XMALLOC(size_t n);
|
||||
extern void *XREALLOC(void *p, size_t n);
|
||||
extern void XFREE(void *p);
|
||||
extern void *XMALLOC(size_t size);
|
||||
extern void *XREALLOC(void *mem, size_t oldsize, size_t newsize);
|
||||
extern void XFREE(void *mem, size_t size);
|
||||
#endif
|
||||
|
||||
/* ---> Basic Manipulations <--- */
|
||||
|
Loading…
Reference in New Issue
Block a user