From e7c7a54273a3b8aae0fb3f2faf88fcb032a2e233 Mon Sep 17 00:00:00 2001 From: Guillaume Bittoun Date: Wed, 18 Feb 2015 11:24:14 +0000 Subject: [PATCH] avl_tree: bug fix --- src/lol/base/avl_tree.h | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/lol/base/avl_tree.h b/src/lol/base/avl_tree.h index a7989de8..79ef7adf 100644 --- a/src/lol/base/avl_tree.h +++ b/src/lol/base/avl_tree.h @@ -386,23 +386,22 @@ protected: if (replacement) { *replacement->m_parent_slot = replacement->m_child[1 - i]; - if (*replacement->m_parent_slot) - (*replacement->m_parent_slot)->rebalance_if_needed(); replacement->m_parent_slot = m_parent_slot; *replacement->m_parent_slot = replacement; replacement->m_child[0] = m_child[0]; + if (replacement->m_child[0]) + replacement->m_child[0]->m_parent_slot = &replacement->m_child[0]; + replacement->m_child[1] = m_child[1]; + if (replacement->m_child[1]) + replacement->m_child[1]->m_parent_slot = &replacement->m_child[1]; } else *m_parent_slot = nullptr; replace_chain(replacement); - - m_parent_slot = nullptr; - m_child[0] = nullptr; - m_child[1] = nullptr; } void replace_chain(tree_node * replacement) @@ -423,8 +422,6 @@ protected: if (m_chain[i]) m_chain[i]->m_chain[i ? 0 : 1] = m_chain[i ? 0 : 1]; } - - m_chain[i] = nullptr; } }