From e023ba20b6a6db0da8df5f2bbadb63db7126deca Mon Sep 17 00:00:00 2001 From: whaffman Date: Tue, 10 Jun 2025 20:24:26 +0200 Subject: [PATCH] Refactor memory management in game_free and game_manager_destroy; --- src/game/game.c | 12 +++++++----- src/manager/game_manager.c | 8 +++----- src/parser/map_free.c | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/game/game.c b/src/game/game.c index a959770..5b219c2 100644 --- a/src/game/game.c +++ b/src/game/game.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ */ /* +#+ */ /* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */ -/* Updated: 2025/06/10 19:12:41 by whaffman ######## odam.nl */ +/* Updated: 2025/06/10 20:22:34 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -86,6 +86,10 @@ static void free_scoreboard(mlx_t *mlx, t_scoreboard *scoreboard) void game_free(t_game *game) { + if (game->scoreboard && game->screen && game->screen->mlx) + free_scoreboard(game->screen->mlx, game->scoreboard); + else if (game->scoreboard) + free(game->scoreboard); if (game->screen) { if (game->screen->hud) @@ -94,6 +98,7 @@ void game_free(t_game *game) game->screen->hud = NULL; } mlx_delete_image(game->screen->mlx, game->screen->img); + free(game->screen); } if (game->player) free(game->player); @@ -101,9 +106,6 @@ void game_free(t_game *game) map_free(game->map); if (game->keyboard) free(game->keyboard); - if (game->scoreboard && game->screen && game->screen->mlx) - free_scoreboard(game->screen->mlx, game->scoreboard); - else if (game->scoreboard) - free(game->scoreboard); game->scoreboard = NULL; + free(game); } diff --git a/src/manager/game_manager.c b/src/manager/game_manager.c index 1b313b2..0755096 100644 --- a/src/manager/game_manager.c +++ b/src/manager/game_manager.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ */ /* +#+ */ /* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */ -/* Updated: 2025/06/10 19:16:24 by whaffman ######## odam.nl */ +/* Updated: 2025/06/10 20:24:00 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -59,12 +59,10 @@ void game_manager_destroy(t_game_manager *manager) menu_free(manager->menu, manager->game->screen); if (manager->end_screen) menu_free(manager->end_screen, manager->game->screen); - if (manager->game) - game_free(manager->game); mlx_close_window(manager->game->screen->mlx); mlx_terminate(manager->game->screen->mlx); - free(manager->game->screen); - free(manager->game); + if (manager->game) + game_free(manager->game); free(manager); exit(EXIT_SUCCESS); } diff --git a/src/parser/map_free.c b/src/parser/map_free.c index 694153c..ad077bc 100644 --- a/src/parser/map_free.c +++ b/src/parser/map_free.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ */ /* +#+ */ /* Created: 2025/04/23 12:22:28 by whaffman #+# #+# */ -/* Updated: 2025/06/03 13:28:30 by whaffman ######## odam.nl */ +/* Updated: 2025/06/10 19:42:36 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ @@ -29,7 +29,7 @@ void map_free(t_map *map) { if (map->sprite_lib[i].texture) mlx_delete_texture(map->sprite_lib[i].texture); - if (i < 4) + if (i < 5) { if (map->textures[i]) mlx_delete_texture(map->textures[i]);