From 5e3fe618e3d24d9c11fbc7945e8bab806698c05a Mon Sep 17 00:00:00 2001 From: Klemen Plestenjak Date: Thu, 9 Nov 2023 11:14:25 +0100 Subject: [PATCH] Fix memory leak when disposing tilemap --- engine/breeze/world/map.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/engine/breeze/world/map.c b/engine/breeze/world/map.c index 8245aa4..d1e742e 100644 --- a/engine/breeze/world/map.c +++ b/engine/breeze/world/map.c @@ -206,10 +206,24 @@ BzTileMap bzTileMapCreate(const BzTileMapDesc *desc) { void bzTileMapDestroy(BzTileMap *tilemap) { for (i32 i = 0; i < tilemap->layerCount; i++) { BzTileLayer *layer = tilemap->layers + i; - bzFree(layer->data); - layer->data = NULL; - layer->dataCount = 0; + if (layer->data) { + bzFree(layer->data); + layer->data = NULL; + layer->dataCount = 0; + } } + for (i32 i = 0; i < tilemap->objectLayerCount; i++) { + BzTileObjectLayer *objectLayer = tilemap->objectLayers + i; + if (objectLayer->objects) { + bzFree(objectLayer->objects); + objectLayer->objects = NULL; + objectLayer->objectCount = 0; + } + } + + bzFree(tilemap->colliderMap); + tilemap->collidersCount = 0; + *tilemap = BZ_TILEMAP_INVALID; }