From 6baf06944595202e3c358c661a626a30e4c45fc8 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 9 May 2024 13:48:52 -0700 Subject: [PATCH] Fix firstGeq bug --- VersionedMap.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/VersionedMap.cpp b/VersionedMap.cpp index 4504bc0..b3687da 100644 --- a/VersionedMap.cpp +++ b/VersionedMap.cpp @@ -936,9 +936,11 @@ void VersionedMap::Impl::firstGeq(const Key *key, const int64_t *version, } else if (finger.backNode() == 0) { iterator[i].impl->cmp = 1; move(finger, version[i], true); - const auto &entry = *mm.base[finger.backNode()].entry; - iterator[i].impl->materializeClearEndingHere = - entry.clearTo() && entry.pointMutation(); + if (finger.searchPathSize() > 0) { + const auto &entry = *mm.base[finger.backNode()].entry; + iterator[i].impl->materializeClearEndingHere = + entry.clearTo() && entry.pointMutation(); + } } else { iterator[i].impl->cmp = 0; } @@ -1076,7 +1078,7 @@ int main() { } const int64_t v = 3; cast(versionedMap)->printInOrder(v); - weaselab::VersionedMap::Key k = {(const uint8_t *)"aa", 2}; + weaselab::VersionedMap::Key k = {(const uint8_t *)"zz", 2}; weaselab::VersionedMap::Iterator iter; versionedMap.firstGeq(&k, &v, &iter, 1); for (auto end = versionedMap.end(v); iter != end; ++iter) {