Avoid longestCommonPrefix if partialKeyLen == 0
This commit is contained in:
@@ -1220,11 +1220,13 @@ getChildUpdatingMaxVersion(Node3 *self, std::span<const uint8_t> &remaining,
|
||||
return nullptr;
|
||||
}
|
||||
Node *c = self->children[i];
|
||||
int commonLen = std::min<int>(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<int>(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<const uint8_t> &remaining,
|
||||
return nullptr;
|
||||
}
|
||||
Node *c = self->children[i];
|
||||
int commonLen = std::min<int>(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<int>(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<const uint8_t> &remaining,
|
||||
return nullptr;
|
||||
}
|
||||
Node *c = self->children[i];
|
||||
int commonLen = std::min<int>(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<int>(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<const uint8_t> &remaining,
|
||||
return nullptr;
|
||||
}
|
||||
Node *c = n;
|
||||
int commonLen = std::min<int>(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<int>(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;
|
||||
|
Reference in New Issue
Block a user