From 4040ee86a9c3a921567ad4faf7b6ab8e4dcfb4d3 Mon Sep 17 00:00:00 2001 From: Wojtek Date: Mon, 1 Jun 2026 17:12:52 +0200 Subject: [PATCH] crash fix ? --- .../collections/b_index/bindex_iterator.hpp | 3 +++ tests/unit_tests/MorphingBIndexTest.cpp | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/dbzero/core/collections/b_index/bindex_iterator.hpp b/src/dbzero/core/collections/b_index/bindex_iterator.hpp index a268ca16..98838d07 100644 --- a/src/dbzero/core/collections/b_index/bindex_iterator.hpp +++ b/src/dbzero/core/collections/b_index/bindex_iterator.hpp @@ -665,6 +665,9 @@ namespace db0::bindex::iterator } bool is_end() const { + if (!m_ptr) { + return true; + } return m_functions.m_is_end_ptr(m_ptr); } diff --git a/tests/unit_tests/MorphingBIndexTest.cpp b/tests/unit_tests/MorphingBIndexTest.cpp index 2fe1e177..38f4d7b0 100644 --- a/tests/unit_tests/MorphingBIndexTest.cpp +++ b/tests/unit_tests/MorphingBIndexTest.cpp @@ -205,6 +205,25 @@ namespace tests ASSERT_NO_THROW( db0::MorphingBIndex::joinable_const_iterator() ); } + TEST_F( MorphingBIndexTest , testDefaultIteratorIsEnd ) + { + db0::MorphingBIndex::joinable_const_iterator cut; + + ASSERT_TRUE(cut.is_end()); + } + + TEST_F( MorphingBIndexTest , testResetIteratorIsEnd ) + { + auto memspace = getMemspace(); + db0::MorphingBIndex index(memspace, 123u); + auto cut = index.beginJoin(1); + + ASSERT_FALSE(cut.is_end()); + cut.reset(); + + ASSERT_TRUE(cut.is_end()); + } + TEST_F( MorphingBIndexTest , testAssignmentOperatorIsAllowed ) { auto memspace = getMemspace();