summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/basic/mempool.c11
-rw-r--r--src/basic/mempool.h2
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 = { \