diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 7004be4..499f1cf 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -2779,21 +2779,22 @@ Node **insert(Node **self, std::span key, return self; } - auto &child = getOrCreateChild(*self, key.front(), writeVersion, tls); + int index = key.front(); + key = key.subspan(1, key.size() - 1); + auto &child = getOrCreateChild(*self, index, writeVersion, tls); if (!child) { - child = tls->allocate(key.size() - 1); + child = tls->allocate(key.size()); child->numChildren = 0; child->entryPresent = false; - child->partialKeyLen = key.size() - 1; + child->partialKeyLen = key.size(); child->parent = *self; - child->parentsIndex = key.front(); + child->parentsIndex = index; setMaxVersion(child, impl, writeVersion); - memcpy(child->partialKey(), key.data() + 1, child->partialKeyLen); + memcpy(child->partialKey(), key.data(), child->partialKeyLen); return &child; } self = &child; - key = key.subspan(1, key.size() - 1); if ((*self)->partialKeyLen > 0) { consumePartialKey(*self, key, writeVersion, tls);