From c3001ea4bc0fd8adaebc2493c7273d7bf2a9fda0 Mon Sep 17 00:00:00 2001 From: Klemen Plestenjak Date: Fri, 29 Dec 2023 19:14:22 +0100 Subject: [PATCH] Fix memory leak in object pool --- engine/breeze/util/object_pool.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/engine/breeze/util/object_pool.c b/engine/breeze/util/object_pool.c index 412ecc0..f429d59 100644 --- a/engine/breeze/util/object_pool.c +++ b/engine/breeze/util/object_pool.c @@ -49,7 +49,6 @@ static void addNewPage(BzObjectPool *pool) { if (pool->pageSize >= pool->pageCapacity) { size_t newCapacity = pool->pageCapacity << 1; void **newPages = bzResize(pool->pages, sizeof(*newPages) * newCapacity); - BZ_ASSERT(newPages); pool->pages = newPages; pool->pageCapacity = newCapacity; } @@ -75,13 +74,8 @@ BzObjectPool *bzObjectPoolCreate(const BzObjectPoolDesc *desc) { size_t objectsPerPage = desc->objectsPerPage; - void *firstPage = bzAlloc(stride * objectsPerPage); - BZ_ASSERT(firstPage); - size_t pageCapacity = 8; void **pages = bzAlloc(sizeof(*pages) * pageCapacity); - BZ_ASSERT(pages); - pages[0] = firstPage; BzObjectPool *pool = bzAlloc(sizeof(*pool)); *pool = (BzObjectPool) { @@ -97,6 +91,12 @@ BzObjectPool *bzObjectPoolCreate(const BzObjectPoolDesc *desc) { return pool; } void bzObjectPoolDestroy(BzObjectPool *pool) { + for (size_t i = 0; i < pool->pageSize; i++) { + bzFree(pool->pages[i]); + pool->pages[i] = NULL; + } + bzFree(pool->pages); + pool->pages = NULL; bzFree(pool); }