Consume first byte in insert iteration

This commit is contained in:
2024-08-12 15:39:09 -07:00
parent 62516825d1
commit 8a44055533

View File

@@ -2779,21 +2779,22 @@ Node **insert(Node **self, std::span<const uint8_t> 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<Node0>(key.size() - 1);
child = tls->allocate<Node0>(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);