From 30b5ec5bbaf0e68ccb3d9832b6cf11ba4daf211f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Luk=C3=A1=C5=A1=20Ji=C5=99i=C5=A1t=C4=9B?= Date: Fri, 1 Aug 2025 13:56:07 +0200 Subject: [PATCH] Fix major bugs in t_rb_tree --- ft_struct/ft_rbtree_free.c | 5 ++++- ft_struct/ft_rbtree_helpers.c | 2 ++ ft_struct/ft_rbtree_insert.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) 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); } -- 2.30.2