diff options
-rw-r--r-- | src/basic/mempool.c | 11 | ||||
-rw-r--r-- | src/basic/mempool.h | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/basic/mempool.c b/src/basic/mempool.c index d934aa9547..999b86d5cb 100644 --- a/src/basic/mempool.c +++ b/src/basic/mempool.c @@ -70,9 +70,16 @@ void* mempool_alloc0_tile(struct mempool *mp) { return p; } -void mempool_free_tile(struct mempool *mp, void *p) { - * (void**) p = mp->freelist; +void* mempool_free_tile(struct mempool *mp, void *p) { + assert(mp); + + if (!p) + return NULL; + + *(void**) p = mp->freelist; mp->freelist = p; + + return NULL; } void mempool_drop(struct mempool *mp) { diff --git a/src/basic/mempool.h b/src/basic/mempool.h index 134e6cab17..6680ba3a9b 100644 --- a/src/basic/mempool.h +++ b/src/basic/mempool.h @@ -15,7 +15,7 @@ struct mempool { void* mempool_alloc_tile(struct mempool *mp); void* mempool_alloc0_tile(struct mempool *mp); -void mempool_free_tile(struct mempool *mp, void *p); +void* mempool_free_tile(struct mempool *mp, void *p); #define DEFINE_MEMPOOL(pool_name, tile_type, alloc_at_least) \ static struct mempool pool_name = { \ |