Răsfoiți Sursa

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
rdb 5 ani în urmă
părinte
comite
74983d19a4
1 a modificat fișierele cu 5 adăugiri și 1 ștergeri
  1. 5 1
      dtool/src/dtoolbase/neverFreeMemory.I

+ 5 - 1
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;
+  }
 }
 
 /**