diff --git a/VersionedMap.cpp b/VersionedMap.cpp index 68b5692..4c03cd0 100644 --- a/VersionedMap.cpp +++ b/VersionedMap.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -338,6 +339,20 @@ struct MemManager { } next = max + 1; + for (int i = next; i < firstUnaddressable; ++i) { + if (base[i].entry != nullptr) { +#if DEBUG_VERBOSE + if (debugVerboseEnabled) { + printf( + "Collecting %u while collecting right page-unaligned surplus\n", + i); + } +#endif + base[i].entry->delref(); + base[i].entry = nullptr; + } + } + // Rebuild free list and delref entries freeList = 0; reachable.iterateAbsentApproxBackwards(