]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
get total size beforehand
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Wed, 4 Dec 2019 16:00:25 +0000 (17:00 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Wed, 4 Mar 2020 09:27:18 +0000 (10:27 +0100)
pdns/cachecleaner.hh

index a4dfe8863d9ced3f2837fc199a346b360092dfd7..68118f35de607f56b187bb1542702dbf1a7394bd 100644 (file)
@@ -167,7 +167,11 @@ template <typename S, typename C, typename T> uint64_t pruneMutexCollectionsVect
   } else {
     lookAt = cacheSize / 10;
   }
-  
+
+  uint64_t maps_size = maps.size();
+  if (maps_size == 0)
+      return 0;
+
   for (auto& mc : maps) {
     const std::lock_guard<std::mutex> lock(mc.mutex);
     auto& sidx = boost::multi_index::get<S>(mc.d_map);
@@ -182,10 +186,10 @@ template <typename S, typename C, typename T> uint64_t pruneMutexCollectionsVect
         ++i;
       }
 
-      if (toTrim && erased >= toTrim / maps.size())
+      if (toTrim && erased >= toTrim / maps_size)
         break;
 
-      if (lookedAt > lookAt / maps.size())
+      if (lookedAt > lookAt / maps_size)
         break;
     }
     totErased += erased;