From: Lukáš Jiřiště Date: Thu, 14 Aug 2025 12:41:54 +0000 (+0200) Subject: Add explicit traversal free X-Git-Url: https://git.ljiriste.work/?a=commitdiff_plain;h=70565b5ddfee6556ab1874224501c71984572be9;p=Libft.git Add explicit traversal free This is useful when something unexpected happens during traversal and one needs to free the traversal. --- diff --git a/ft_struct/ft_dict_traversal.c b/ft_struct/ft_dict_traversal.c index 20e2f98..967bca2 100644 --- a/ft_struct/ft_dict_traversal.c +++ b/ft_struct/ft_dict_traversal.c @@ -10,3 +10,9 @@ void *ft_dict_traverse(t_dict_traversal *traversal) { return ((char *)ft_rbtree_traverse(&traversal->traversal) + traversal->key_size); } + +void ft_dict_traversal_free(t_dict_traversal *traversal) +{ + ft_rbtree_traversal_free(&traversal->traversal); + return ; +} diff --git a/ft_struct/ft_rbtree_traversal.c b/ft_struct/ft_rbtree_traversal.c index 5d28c86..8e022d6 100644 --- a/ft_struct/ft_rbtree_traversal.c +++ b/ft_struct/ft_rbtree_traversal.c @@ -128,6 +128,12 @@ void *ft_rbtree_traverse(t_rbtree_traversal *traversal) node = ft_stack_pop_forget(&traversal->stack); if (node && *node) return (&(*node)->data); - ft_stack_free(&traversal->stack, NULL); + ft_rbtree_traversal_free(traversal); return (NULL); } + +void ft_rbtree_traversal_free(t_rbtree_traversal *traversal) +{ + ft_stack_free(&traversal->stack, NULL); + return ; +} diff --git a/inc/ft_struct.h b/inc/ft_struct.h index 27440dc..f1bfbf4 100644 --- a/inc/ft_struct.h +++ b/inc/ft_struct.h @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/20 16:59:43 by ljiriste #+# #+# */ -/* Updated: 2025/08/14 14:33:38 by ljiriste ### ########.fr */ +/* Updated: 2025/08/14 14:41:41 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -116,6 +116,7 @@ typedef struct s_rbtree_traversal t_ft_stat ft_rbtree_traversal_init(t_rbtree_traversal *traversal, t_rbtree *tree, t_traversal_order order); void *ft_rbtree_traverse(t_rbtree_traversal *traversal); +void ft_rbtree_traversal_free(t_rbtree_traversal *traversal); typedef struct s_dict { @@ -138,6 +139,7 @@ typedef struct s_dict_traversal t_ft_stat ft_dict_traversal_init(t_dict_traversal *traversal, t_dict *dict); void *ft_dict_traverse(t_dict_traversal *traversal); +void ft_dict_traversal_free(t_dict_traversal *traversal); # ifdef __cplusplus }