summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorJ08nY2018-04-09 18:33:15 +0200
committerJ08nY2018-04-09 18:33:15 +0200
commit65ec6b9789294a5bf8319b5eb14d2cb65b1b8fe8 (patch)
tree274b2a9215900ae5c9118ea90ec7f5fdb6c1bc45 /src/util
parent13ad6fdecf1067a72c5dd7ae995d890792fda31d (diff)
downloadecgen-65ec6b9789294a5bf8319b5eb14d2cb65b1b8fe8.tar.gz
ecgen-65ec6b9789294a5bf8319b5eb14d2cb65b1b8fe8.tar.zst
ecgen-65ec6b9789294a5bf8319b5eb14d2cb65b1b8fe8.zip
Add the custom CM method, finally working.
Diffstat (limited to 'src/util')
-rw-r--r--src/util/memory.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/util/memory.c b/src/util/memory.c
index 439385c..d18c01f 100644
--- a/src/util/memory.c
+++ b/src/util/memory.c
@@ -5,6 +5,9 @@
#include "memory.h"
#include <pari/pari.h>
+#define ECGEN_PARI_MEM
+#ifdef ECGEN_PARI_MEM
+
static void *(*malloc_func)(size_t) = pari_malloc;
static void *(*calloc_func)(size_t) = pari_calloc;
@@ -13,6 +16,20 @@ static void *(*realloc_func)(void *, size_t) = pari_realloc;
static void (*free_func)(void *) = pari_free;
+#else
+
+static void *(*malloc_func)(size_t) = malloc;
+
+void *calloc_wrapper(size_t n) { return calloc(1, n); }
+
+static void *(*calloc_func)(size_t) = calloc_wrapper;
+
+static void *(*realloc_func)(void *, size_t) = realloc;
+
+static void (*free_func)(void *) = free;
+
+#endif
+
void *alloc(void *(*fun)(size_t), size_t size) {
void *result = fun(size);
if (!result) {