Fix memory leak when disposing tilemap
This commit is contained in:
@@ -206,10 +206,24 @@ BzTileMap bzTileMapCreate(const BzTileMapDesc *desc) {
|
|||||||
void bzTileMapDestroy(BzTileMap *tilemap) {
|
void bzTileMapDestroy(BzTileMap *tilemap) {
|
||||||
for (i32 i = 0; i < tilemap->layerCount; i++) {
|
for (i32 i = 0; i < tilemap->layerCount; i++) {
|
||||||
BzTileLayer *layer = tilemap->layers + i;
|
BzTileLayer *layer = tilemap->layers + i;
|
||||||
bzFree(layer->data);
|
if (layer->data) {
|
||||||
layer->data = NULL;
|
bzFree(layer->data);
|
||||||
layer->dataCount = 0;
|
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;
|
*tilemap = BZ_TILEMAP_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user