From 93e487c8fbc7c6c0fee7f358a36a9018b3e37004 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Fri, 8 Mar 2024 13:58:40 -0800 Subject: [PATCH] Only track partialKeyCapacity in tests --- ConflictSet.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/ConflictSet.cpp b/ConflictSet.cpp index cc07878..ff62190 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -180,7 +180,9 @@ struct Node { /* end section that's copied to the next node */ Type type; +#ifndef NDEBUG int32_t partialKeyCapacity; +#endif uint8_t *partialKey(); }; @@ -239,7 +241,9 @@ struct Node256 : Node { template NodeT *newNode(int partialKeyCapacity) { auto *result = new (safe_malloc(sizeof(NodeT) + partialKeyCapacity)) NodeT; +#ifndef NDEBUG result->partialKeyCapacity = partialKeyCapacity; +#endif return result; } @@ -492,7 +496,7 @@ Node *&getOrCreateChild(Node *&self, uint8_t index) { auto *newSelf = newNode(self->partialKeyLen); memcpy((char *)newSelf + kNodeCopyBegin, (char *)self + kNodeCopyBegin, kNodeCopySize); - memcpy(newSelf->partialKey(), self->partialKey(), self->partialKeyLen); + memcpy(newSelf->partialKey(), self0->partialKey(), self->partialKeyLen); free(self0); self = newSelf; @@ -505,7 +509,7 @@ Node *&getOrCreateChild(Node *&self, uint8_t index) { auto *newSelf = newNode(self->partialKeyLen); memcpy((char *)newSelf + kNodeCopyBegin, (char *)self + kNodeCopyBegin, kNodeCopySize); - memcpy(newSelf->partialKey(), self->partialKey(), self->partialKeyLen); + memcpy(newSelf->partialKey(), self4->partialKey(), self->partialKeyLen); // TODO replace with memcpy? for (int i = 0; i < 4; ++i) { newSelf->index[i] = self4->index[i]; @@ -525,7 +529,7 @@ Node *&getOrCreateChild(Node *&self, uint8_t index) { auto *newSelf = newNode(self->partialKeyLen); memcpy((char *)newSelf + kNodeCopyBegin, (char *)self + kNodeCopyBegin, kNodeCopySize); - memcpy(newSelf->partialKey(), self->partialKey(), self->partialKeyLen); + memcpy(newSelf->partialKey(), self16->partialKey(), self->partialKeyLen); newSelf->nextFree = 16; int i = 0; for (auto x : self16->index) { @@ -566,7 +570,7 @@ Node *&getOrCreateChild(Node *&self, uint8_t index) { auto *newSelf = newNode(self->partialKeyLen); memcpy((char *)newSelf + kNodeCopyBegin, (char *)self + kNodeCopyBegin, kNodeCopySize); - memcpy(newSelf->partialKey(), self->partialKey(), self->partialKeyLen); + memcpy(newSelf->partialKey(), self48->partialKey(), self->partialKeyLen); newSelf->bitSet = self48->bitSet; newSelf->bitSet.forEachInRange( [&](int i) { @@ -1492,8 +1496,8 @@ template } else { // Consider adding a partial key if ((*self)->numChildren == 0 && !(*self)->entryPresent) { - (*self)->partialKeyLen = - std::min(key.size(), (*self)->partialKeyCapacity); + assert((*self)->partialKeyCapacity == int(key.size())); + (*self)->partialKeyLen = key.size(); memcpy((*self)->partialKey(), key.data(), (*self)->partialKeyLen); key = key.subspan((*self)->partialKeyLen, key.size() - (*self)->partialKeyLen);