diff options
| author | J08nY | 2017-09-19 13:07:45 +0200 |
|---|---|---|
| committer | J08nY | 2017-09-19 13:07:45 +0200 |
| commit | 0d068cefe5f43d69fb7bae0c7882598c1213f60b (patch) | |
| tree | 29bf69e2bf51e33617b78e4439c8b0077e543b1d /src/util/memory.c | |
| parent | bfeeedd8b158288b1e66e241620966e933c9e3c7 (diff) | |
| parent | 8448edf40ea8d8b128ff83dc08335b3bf14718cb (diff) | |
| download | ecgen-0d068cefe5f43d69fb7bae0c7882598c1213f60b.tar.gz ecgen-0d068cefe5f43d69fb7bae0c7882598c1213f60b.tar.zst ecgen-0d068cefe5f43d69fb7bae0c7882598c1213f60b.zip | |
Diffstat (limited to 'src/util/memory.c')
| -rw-r--r-- | src/util/memory.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/util/memory.c b/src/util/memory.c index 53f68c9..6051459 100644 --- a/src/util/memory.c +++ b/src/util/memory.c @@ -5,7 +5,6 @@ #include "memory.h" #include <pari/pari.h> - static void *(*malloc_func)(size_t) = pari_malloc; static void *(*calloc_func)(size_t) = pari_calloc; @@ -25,9 +24,7 @@ void *alloc(void *(*fun)(size_t), size_t size) { void *try_malloc(size_t size) { return alloc(malloc_func, size); } -void *try_calloc(size_t size) { - return alloc(calloc_func, size); -} +void *try_calloc(size_t size) { return alloc(calloc_func, size); } void *try_realloc(void *ptr, size_t size) { void *result = realloc_func(ptr, size); @@ -38,13 +35,22 @@ void *try_realloc(void *ptr, size_t size) { return result; } -void try_free(void *ptr) { - free_func(ptr); +char *try_strdup(const char *str) { + size_t len = strlen(str); + return try_memdup(str, len + 1); +} + +void *try_memdup(const void *mem, size_t len) { + void *result = try_malloc(len); + memcpy(result, mem, len); + return result; } +void try_free(void *ptr) { free_func(ptr); } + void set_mem_funcs(void *(*malloc_fun)(size_t), void *(*calloc_fun)(size_t), - void *(*realloc_fun)(void *, size_t), - void(*free_fun)(void *)) { + void *(*realloc_fun)(void *, size_t), + void (*free_fun)(void *)) { malloc_func = malloc_fun; calloc_func = calloc_fun; realloc_func = realloc_fun; |
