eraseBetween bug fixes
This commit is contained in:
@@ -1836,9 +1836,8 @@ void eraseBetween(Node48 *&n, int begin, int end, WriteContext *tls) {
|
||||
*nodeOut++ = n->children[i];
|
||||
*indexOut++ = n->reverseIndex[i];
|
||||
*maxVOut++ = n->childMaxVersion[i];
|
||||
n->maxOfMax[n->reverseIndex[i] >> Node48::kMaxOfMaxShift] =
|
||||
std::max(n->maxOfMax[n->reverseIndex[i] >> Node48::kMaxOfMaxShift],
|
||||
n->childMaxVersion[i]);
|
||||
n->maxOfMax[i >> Node48::kMaxOfMaxShift] = std::max(
|
||||
n->maxOfMax[i >> Node48::kMaxOfMaxShift], n->childMaxVersion[i]);
|
||||
n->bitSet.set(n->reverseIndex[i]);
|
||||
n->index[n->reverseIndex[i]] = n->nextFree++;
|
||||
}
|
||||
@@ -1895,8 +1894,7 @@ void eraseBetween(Node256 *&n, int begin, int end, WriteContext *tls) {
|
||||
newNode->copyChildrenAndKeyFrom(*n);
|
||||
tls->release(n);
|
||||
(Node *&)n = newNode;
|
||||
}
|
||||
if (n->numChildren <= Node48::kMaxNodes) {
|
||||
} else if (n->numChildren <= Node48::kMaxNodes) {
|
||||
auto *newNode = tls->allocate<Node48>(n->partialKeyLen);
|
||||
newNode->copyChildrenAndKeyFrom(*n);
|
||||
tls->release(n);
|
||||
|
Reference in New Issue
Block a user