diff --git a/VersionedMap.cpp b/VersionedMap.cpp index c4109ea..f90c552 100644 --- a/VersionedMap.cpp +++ b/VersionedMap.cpp @@ -1220,20 +1220,20 @@ VersionedMap::Iterator::operator*() const { void materializeMutations(VersionedMap::Iterator::Impl *impl, const Entry *prev) { - if (prev == nullptr) { - Finger copy; - impl->finger.copyTo(copy); - impl->map->move(copy, impl->version); - if (copy.searchPathSize() > 0) { - prev = impl->map->mm.base[copy.backNode()].entry; - } else { - assert(!impl->map->mm.base[impl->finger.backNode()].entry->clearTo()); - } - } - const auto &entry = *impl->map->mm.base[impl->finger.backNode()].entry; impl->mutationCount = 0; if (entry.clearTo()) { + if (prev == nullptr) { + Finger copy; + impl->finger.copyTo(copy); + impl->map->move(copy, impl->version); + if (copy.searchPathSize() > 0) { + prev = impl->map->mm.base[copy.backNode()].entry; + } else { + assert(!impl->map->mm.base[impl->finger.backNode()].entry->clearTo()); + } + } + impl->mutations[impl->mutationCount++] = { prev->getKey(), entry.getKey(),