From 944500af9fbf790bba89e78c17c2220aaf4114f3 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Thu, 2 Apr 2020 23:49:00 -0700 Subject: [PATCH] lib: wrap the memory allocation functions In preparation for adding custom memory allocator support, don't call the standard memory allocation functions directly but rather wrap them with libdeflate_malloc() and libdeflate_free(). --- lib/deflate_compress.c | 1 - lib/deflate_decompress.c | 10 +++++++--- lib/lib_common.h | 3 +++ lib/utils.c | 16 ++++++++++++++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/deflate_compress.c b/lib/deflate_compress.c index 5527078..04d26b0 100644 --- a/lib/deflate_compress.c +++ b/lib/deflate_compress.c @@ -27,7 +27,6 @@ * OTHER DEALINGS IN THE SOFTWARE. */ -#include #include #include "deflate_compress.h" diff --git a/lib/deflate_decompress.c b/lib/deflate_decompress.c index de0c420..b99a09d 100644 --- a/lib/deflate_decompress.c +++ b/lib/deflate_decompress.c @@ -45,7 +45,6 @@ */ #include -#include #include #include "deflate_constants.h" @@ -987,11 +986,16 @@ libdeflate_alloc_decompressor(void) * * But for simplicity, we currently just zero the whole decompressor. */ - return calloc(1, sizeof(struct libdeflate_decompressor)); + struct libdeflate_decompressor *d = libdeflate_malloc(sizeof(*d)); + + if (d == NULL) + return NULL; + memset(d, 0, sizeof(*d)); + return d; } LIBDEFLATEEXPORT void LIBDEFLATEAPI libdeflate_free_decompressor(struct libdeflate_decompressor *d) { - free(d); + libdeflate_free(d); } diff --git a/lib/lib_common.h b/lib/lib_common.h index fb36dfc..46a4a88 100644 --- a/lib/lib_common.h +++ b/lib/lib_common.h @@ -30,6 +30,9 @@ #define _cpu_features SYM_FIXUP(_cpu_features) #define setup_cpu_features SYM_FIXUP(setup_cpu_features) +void *libdeflate_malloc(size_t size); +void libdeflate_free(void *ptr); + void *libdeflate_aligned_malloc(size_t alignment, size_t size); void libdeflate_aligned_free(void *ptr); diff --git a/lib/utils.c b/lib/utils.c index 1e43b76..0cb81cc 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -29,10 +29,22 @@ #include "lib_common.h" +void * +libdeflate_malloc(size_t size) +{ + return malloc(size); +} + +void +libdeflate_free(void *ptr) +{ + free(ptr); +} + void * libdeflate_aligned_malloc(size_t alignment, size_t size) { - void *ptr = malloc(sizeof(void *) + alignment - 1 + size); + void *ptr = libdeflate_malloc(sizeof(void *) + alignment - 1 + size); if (ptr) { void *orig_ptr = ptr; ptr = (void *)ALIGN((uintptr_t)ptr + sizeof(void *), alignment); @@ -45,5 +57,5 @@ void libdeflate_aligned_free(void *ptr) { if (ptr) - free(((void **)ptr)[-1]); + libdeflate_free(((void **)ptr)[-1]); }