diff options
Diffstat (limited to 'mpi-patches/use-txr-allocator')
-rw-r--r-- | mpi-patches/use-txr-allocator | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/mpi-patches/use-txr-allocator b/mpi-patches/use-txr-allocator new file mode 100644 index 00000000..2f85a574 --- /dev/null +++ b/mpi-patches/use-txr-allocator @@ -0,0 +1,70 @@ +Index: mpi-1.8.6/mpi.c +=================================================================== +--- mpi-1.8.6.orig/mpi.c 2011-12-08 22:17:15.000000000 -0800 ++++ mpi-1.8.6/mpi.c 2011-12-08 22:27:07.000000000 -0800 +@@ -15,6 +15,11 @@ + #include <string.h> + #include <ctype.h> + ++typedef unsigned char mem_t; ++extern mem_t *chk_malloc(size_t size); ++extern mem_t *chk_calloc(size_t n, size_t size); ++extern mem_t *chk_realloc(mem_t *, size_t size); ++ + #if MP_DEBUG + #include <stdio.h> + +@@ -154,7 +159,7 @@ + #define s_mp_copy(sp, dp, count) memcpy(dp, sp, (count) * sizeof(mp_digit)) + #endif /* MP_MEMCPY */ + +- #define s_mp_alloc(nb, ni) calloc(nb, ni) ++ #define s_mp_alloc(nb, ni) chk_calloc(nb, ni) + #define s_mp_free(ptr) {if(ptr) free(ptr);} + #endif /* MP_MACRO */ + +@@ -282,7 +287,7 @@ + { + ARGCHK(mp != NULL && prec > 0, MP_BADARG); + +- if((DIGITS(mp) = s_mp_alloc(prec, sizeof(mp_digit))) == NULL) ++ if((DIGITS(mp) = (mp_digit *) s_mp_alloc(prec, sizeof(mp_digit))) == NULL) + return MP_MEM; + + SIGN(mp) = MP_ZPOS; +@@ -312,7 +317,7 @@ + if(mp == from) + return MP_OKAY; + +- if((DIGITS(mp) = s_mp_alloc(USED(from), sizeof(mp_digit))) == NULL) ++ if((DIGITS(mp) = (mp_digit *) s_mp_alloc(USED(from), sizeof(mp_digit))) == NULL) + return MP_MEM; + + s_mp_copy(DIGITS(from), DIGITS(mp), USED(from)); +@@ -358,7 +363,7 @@ + s_mp_copy(DIGITS(from), DIGITS(to), USED(from)); + + } else { +- if((tmp = s_mp_alloc(USED(from), sizeof(mp_digit))) == NULL) ++ if((tmp = (mp_digit *) s_mp_alloc(USED(from), sizeof(mp_digit))) == NULL) + return MP_MEM; + + s_mp_copy(DIGITS(from), tmp, USED(from)); +@@ -2670,7 +2675,7 @@ + /* Set min to next nearest default precision block size */ + min = ((min + (s_mp_defprec - 1)) / s_mp_defprec) * s_mp_defprec; + +- if((tmp = s_mp_alloc(min, sizeof(mp_digit))) == NULL) ++ if((tmp = (mp_digit *) s_mp_alloc(min, sizeof(mp_digit))) == NULL) + return MP_MEM; + + s_mp_copy(DIGITS(mp), tmp, USED(mp)); +@@ -2757,7 +2762,7 @@ + /* Allocate ni records of nb bytes each, and return a pointer to that */ + void *s_mp_alloc(size_t nb, size_t ni) + { +- return calloc(nb, ni); ++ return chk_calloc(nb, ni); + + } /* end s_mp_alloc() */ + #endif |