diff --git a/ConflictSet.cpp b/ConflictSet.cpp index f658eba..5cec4ad 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -1395,19 +1395,18 @@ void destroyTree(Node *root) { } void addPointWrite(Node *&root, int64_t oldestVersion, - const ConflictSet::WriteRange &w) { - auto *n = insert(&root, std::span(w.begin.p, w.begin.len), - w.writeVersion, true); + std::span key, int64_t writeVersion) { + auto *n = insert(&root, key, writeVersion, true); if (!n->entryPresent) { auto *p = nextLogical(n); n->entryPresent = true; - n->entry.pointVersion = w.writeVersion; - n->maxVersion = w.writeVersion; + n->entry.pointVersion = writeVersion; + n->maxVersion = writeVersion; n->entry.rangeVersion = p != nullptr ? p->entry.rangeVersion : oldestVersion; } else { - n->entry.pointVersion = std::max(n->entry.pointVersion, w.writeVersion); - n->maxVersion = std::max(n->maxVersion, w.writeVersion); + n->entry.pointVersion = std::max(n->entry.pointVersion, writeVersion); + n->maxVersion = std::max(n->maxVersion, writeVersion); } } @@ -1421,7 +1420,7 @@ void addWriteRange(Node *&root, int64_t oldestVersion, std::min(begin.size(), end.size())); if (lcp == int(begin.size()) && end.size() == begin.size() + 1 && end.back() == 0) { - return addPointWrite(root, oldestVersion, w); + return addPointWrite(root, oldestVersion, begin, w.writeVersion); } auto remaining = begin.subspan(0, lcp); @@ -1644,7 +1643,9 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl { addWriteRange(root, oldestVersion, w); } else { keyUpdates += 1; - addPointWrite(root, oldestVersion, w); + addPointWrite(root, oldestVersion, + std::span(w.begin.p, w.begin.len), + w.writeVersion); } } }