From fdbfe85a874f39c7e6a17f8f1cc0cd757200299e Mon Sep 17 00:00:00 2001 From: davidot Date: Thu, 10 Feb 2022 12:24:49 +0100 Subject: [PATCH] AK: Clear minimum when removing last node of RedBlackTree --- AK/RedBlackTree.h | 1 + Tests/AK/TestRedBlackTree.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/AK/RedBlackTree.h b/AK/RedBlackTree.h index d6b4638050..2740113420 100644 --- a/AK/RedBlackTree.h +++ b/AK/RedBlackTree.h @@ -230,6 +230,7 @@ protected: // special case: deleting the only node if (m_size == 1) { m_root = nullptr; + m_minimum = nullptr; m_size = 0; return; } diff --git a/Tests/AK/TestRedBlackTree.cpp b/Tests/AK/TestRedBlackTree.cpp index f6d1ddebac..0b0848bf67 100644 --- a/Tests/AK/TestRedBlackTree.cpp +++ b/Tests/AK/TestRedBlackTree.cpp @@ -128,3 +128,17 @@ TEST_CASE(find_smallest_not_below_iterator) EXPECT_EQ(smallest_not_below_three.key(), 3u); } } + +TEST_CASE(iterators_on_emptied_tree) +{ + RedBlackTree test; + test.insert(1, 1); + test.remove(1); + EXPECT_EQ(test.size(), 0u); + auto begin_iterator = test.begin(); + auto end_iterator = test.end(); + EXPECT(begin_iterator.is_end()); + + EXPECT_EQ(begin_iterator, end_iterator); + EXPECT(!(begin_iterator != end_iterator)); +}