2025-06-25 18:08:19 +02:00
|
|
|
/* ************************************************************************** */
|
|
|
|
|
/* */
|
|
|
|
|
/* ::: :::::::: */
|
|
|
|
|
/* frees.c :+: :+: :+: */
|
|
|
|
|
/* +:+ +:+ +:+ */
|
2025-07-17 13:38:59 +02:00
|
|
|
/* By: kcolin <kcolin@42.fr> +#+ +:+ +#+ */
|
2025-06-25 18:08:19 +02:00
|
|
|
/* +#+#+#+#+#+ +#+ */
|
2025-07-17 13:38:59 +02:00
|
|
|
/* Created: 2025/07/17 13:59:27 by kcolin #+# #+# */
|
2025-07-22 12:57:39 +02:00
|
|
|
/* Updated: 2025/07/22 12:54:01 by tchampio ### ########.fr */
|
2025-06-25 18:08:19 +02:00
|
|
|
/* */
|
|
|
|
|
/* ************************************************************************** */
|
|
|
|
|
|
2025-07-15 10:33:25 +02:00
|
|
|
#include "../../mlx/mlx.h"
|
2025-07-17 14:11:30 +02:00
|
|
|
#include "../../libft/includes/libft.h"
|
2025-07-17 14:57:29 +02:00
|
|
|
#include "../map/mapdata.h"
|
|
|
|
|
#include "../cub3d_data.h"
|
2025-06-25 18:08:19 +02:00
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
void free_tab(char **tab)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
if (!tab)
|
|
|
|
|
return ;
|
|
|
|
|
i = 0;
|
|
|
|
|
while (tab[i])
|
|
|
|
|
{
|
|
|
|
|
free(tab[i]);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
free(tab);
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-17 14:33:55 +02:00
|
|
|
void free_tab_length(char **tab, int length)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
if (!tab)
|
|
|
|
|
return ;
|
|
|
|
|
i = 0;
|
|
|
|
|
while (i < length)
|
|
|
|
|
{
|
|
|
|
|
free(tab[i]);
|
|
|
|
|
++i;
|
|
|
|
|
}
|
|
|
|
|
free(tab);
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-25 18:08:19 +02:00
|
|
|
void free_map(t_mapdata *map)
|
|
|
|
|
{
|
2025-07-22 12:57:39 +02:00
|
|
|
if (map->map)
|
|
|
|
|
free_tab(map->map);
|
|
|
|
|
if (map->mapflood)
|
|
|
|
|
free_tab(map->mapflood);
|
|
|
|
|
if (map->ea_texture)
|
|
|
|
|
free(map->ea_texture);
|
|
|
|
|
if (map->no_texture)
|
|
|
|
|
free(map->no_texture);
|
|
|
|
|
if (map->so_texture)
|
|
|
|
|
free(map->so_texture);
|
|
|
|
|
if (map->we_texture)
|
|
|
|
|
free(map->we_texture);
|
|
|
|
|
if (map->filename)
|
|
|
|
|
free(map->filename);
|
2025-06-25 18:08:19 +02:00
|
|
|
free(map);
|
|
|
|
|
}
|
2025-07-15 10:33:25 +02:00
|
|
|
|
|
|
|
|
int destroy(t_cub3d_data *data)
|
|
|
|
|
{
|
|
|
|
|
free_map(data->map);
|
|
|
|
|
if (data->mlx_win)
|
|
|
|
|
mlx_destroy_window(data->mlx, data->mlx_win);
|
2025-07-17 14:57:29 +02:00
|
|
|
if (data->img_data)
|
|
|
|
|
mlx_destroy_image(data->mlx, data->img_data->img);
|
|
|
|
|
free(data->img_data);
|
2025-07-15 10:33:25 +02:00
|
|
|
if (data->mlx)
|
|
|
|
|
mlx_destroy_display(data->mlx);
|
|
|
|
|
free(data->mlx);
|
|
|
|
|
exit(0);
|
|
|
|
|
return (0);
|
|
|
|
|
}
|
2025-07-17 13:38:59 +02:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Calls get_next_line in a loop until NULL is returned, freeing all data returned.
|
|
|
|
|
Ensures that all memory allocated by get_next_line is properly freed.
|
|
|
|
|
*/
|
|
|
|
|
void gnl_exhaust(int fd)
|
|
|
|
|
{
|
|
|
|
|
char *line;
|
|
|
|
|
|
|
|
|
|
line = get_next_line(fd);
|
|
|
|
|
while (line != NULL)
|
|
|
|
|
{
|
|
|
|
|
free(line);
|
|
|
|
|
line = get_next_line(fd);
|
|
|
|
|
}
|
|
|
|
|
}
|