From: Lukáš Jiřiště Date: Fri, 1 Aug 2025 11:56:07 +0000 (+0200) Subject: Fix major bugs in t_rb_tree X-Git-Url: https://git.ljiriste.work/?a=commitdiff_plain;h=30b5ec5bbaf0e68ccb3d9832b6cf11ba4daf211f;p=Libft.git Fix major bugs in t_rb_tree --- diff --git a/ft_struct/ft_rbtree_free.c b/ft_struct/ft_rbtree_free.c index 7f436f6..f23efcb 100644 --- a/ft_struct/ft_rbtree_free.c +++ b/ft_struct/ft_rbtree_free.c @@ -3,7 +3,10 @@ static void free_node(t_rbtree_node *node, void (*free_el)(void *)) { - free_el(&node->data); + if (!node) + return ; + if (free_el) + free_el(&node->data); free_node(node->left, free_el); free_node(node->right, free_el); free(node->left); diff --git a/ft_struct/ft_rbtree_helpers.c b/ft_struct/ft_rbtree_helpers.c index cb95238..82147c5 100644 --- a/ft_struct/ft_rbtree_helpers.c +++ b/ft_struct/ft_rbtree_helpers.c @@ -25,5 +25,7 @@ void ft_rbtree_rotate(t_rbtree_node *node) } node->parent = parent->parent; parent->parent = node; + if (!node->parent) + node->tree->root = node; return ; } diff --git a/ft_struct/ft_rbtree_insert.c b/ft_struct/ft_rbtree_insert.c index e8a56a5..ea97937 100644 --- a/ft_struct/ft_rbtree_insert.c +++ b/ft_struct/ft_rbtree_insert.c @@ -86,6 +86,7 @@ t_ft_stat insert_root(t_rbtree *tree, void *element) new_node->left = NULL; new_node->right = NULL; ft_memcpy(&new_node->data, element, tree->el_size); + tree->root = new_node; return (success); }