From 74983d19a41d5fbf006cb269d6b1adc9f705dc99 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 20 Dec 2020 00:19:37 +0100 Subject: [PATCH] dtoolbase: Fix small memory leak in NeverFreeMemory It's using a set purely keyed by number of remaining bytes, so if there are two pages with the exact same number of remaining bytes, one of them gets lost. See #1077 --- dtool/src/dtoolbase/neverFreeMemory.I | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dtool/src/dtoolbase/neverFreeMemory.I b/dtool/src/dtoolbase/neverFreeMemory.I index 6e5216e993..bc608040e3 100644 --- a/dtool/src/dtoolbase/neverFreeMemory.I +++ b/dtool/src/dtoolbase/neverFreeMemory.I @@ -80,7 +80,11 @@ Page(void *start, size_t size) : */ INLINE bool NeverFreeMemory::Page:: operator < (const NeverFreeMemory::Page &other) const { - return _remaining < other._remaining; + if (_remaining != other._remaining) { + return _remaining < other._remaining; + } else { + return _next < other._next; + } } /**