From d3dc7406cf43bdf3f9aa328e580a8710170813a6 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 16 May 2024 22:31:05 -0700 Subject: [PATCH] Fix gc memory leak --- VersionedMap.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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(