diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 549d68e..bf59121 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -1220,11 +1220,13 @@ getChildUpdatingMaxVersion(Node3 *self, std::span &remaining, return nullptr; } Node *c = self->children[i]; - int commonLen = std::min(c->partialKeyLen, key.size()); - int partialKeyIndex = - longestCommonPrefix(c->partialKey(), key.data(), commonLen); - if (partialKeyIndex < c->partialKeyLen) { - return nullptr; + if (c->partialKeyLen > 0) { + int commonLen = std::min(c->partialKeyLen, key.size()); + int partialKeyIndex = + longestCommonPrefix(c->partialKey(), key.data(), commonLen); + if (partialKeyIndex < c->partialKeyLen) { + return nullptr; + } } remaining = key.subspan(c->partialKeyLen, key.size() - c->partialKeyLen); self->childMaxVersion[i] = maxVersion; @@ -1241,11 +1243,13 @@ getChildUpdatingMaxVersion(Node16 *self, std::span &remaining, return nullptr; } Node *c = self->children[i]; - int commonLen = std::min(c->partialKeyLen, key.size()); - int partialKeyIndex = - longestCommonPrefix(c->partialKey(), key.data(), commonLen); - if (partialKeyIndex < c->partialKeyLen) { - return nullptr; + if (c->partialKeyLen > 0) { + int commonLen = std::min(c->partialKeyLen, key.size()); + int partialKeyIndex = + longestCommonPrefix(c->partialKey(), key.data(), commonLen); + if (partialKeyIndex < c->partialKeyLen) { + return nullptr; + } } remaining = key.subspan(c->partialKeyLen, key.size() - c->partialKeyLen); self->childMaxVersion[i] = maxVersion; @@ -1262,11 +1266,13 @@ getChildUpdatingMaxVersion(Node48 *self, std::span &remaining, return nullptr; } Node *c = self->children[i]; - int commonLen = std::min(c->partialKeyLen, key.size()); - int partialKeyIndex = - longestCommonPrefix(c->partialKey(), key.data(), commonLen); - if (partialKeyIndex < c->partialKeyLen) { - return nullptr; + if (c->partialKeyLen > 0) { + int commonLen = std::min(c->partialKeyLen, key.size()); + int partialKeyIndex = + longestCommonPrefix(c->partialKey(), key.data(), commonLen); + if (partialKeyIndex < c->partialKeyLen) { + return nullptr; + } } remaining = key.subspan(c->partialKeyLen, key.size() - c->partialKeyLen); self->childMaxVersion[i] = maxVersion; @@ -1285,11 +1291,13 @@ getChildUpdatingMaxVersion(Node256 *self, std::span &remaining, return nullptr; } Node *c = n; - int commonLen = std::min(c->partialKeyLen, key.size()); - int partialKeyIndex = - longestCommonPrefix(c->partialKey(), key.data(), commonLen); - if (partialKeyIndex < c->partialKeyLen) { - return nullptr; + if (c->partialKeyLen > 0) { + int commonLen = std::min(c->partialKeyLen, key.size()); + int partialKeyIndex = + longestCommonPrefix(c->partialKey(), key.data(), commonLen); + if (partialKeyIndex < c->partialKeyLen) { + return nullptr; + } } remaining = key.subspan(c->partialKeyLen, key.size() - c->partialKeyLen); self->childMaxVersion[index] = maxVersion;