diff --git a/ConflictSet.cpp b/ConflictSet.cpp index cf3f7e7..5abc406 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -2928,16 +2928,6 @@ checkMaxBetweenExclusiveImpl(Node *n, int begin, int end, // up. } key = key.subspan(partialKeyIndex, key.size() - partialKeyIndex); - - } else { - // Consider adding a partial key - if ((*self)->numChildren == 0 && !(*self)->entryPresent) { - assert((*self)->getCapacity() >= int(key.size())); - (*self)->partialKeyLen = key.size(); - memcpy((*self)->partialKey(), key.data(), (*self)->partialKeyLen); - key = key.subspan((*self)->partialKeyLen, - key.size() - (*self)->partialKeyLen); - } } assert(maxVersion(*self, impl) <= writeVersion); @@ -2952,10 +2942,12 @@ checkMaxBetweenExclusiveImpl(Node *n, int begin, int end, child = tls->allocate(key.size() - 1); child->numChildren = 0; child->entryPresent = false; - child->partialKeyLen = 0; + child->partialKeyLen = key.size() - 1; child->parent = *self; child->parentsIndex = key.front(); - setMaxVersion(child, impl, tls->zero); + setMaxVersion(child, impl, writeVersion); + memcpy(child->partialKey(), key.data() + 1, child->partialKeyLen); + return child; } self = &child;