From 91a3d1324b70945b52acb607470336c562280ff4 Mon Sep 17 00:00:00 2001 From: brain Date: Mon, 5 Nov 2007 19:52:16 +0000 Subject: Rehash method added which frees unused memory from the hash_map. Has a delete-safe iterator. see comments. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8542 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/bancache.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/bancache.cpp') diff --git a/src/bancache.cpp b/src/bancache.cpp index a831b1219..bfa1bde11 100644 --- a/src/bancache.cpp +++ b/src/bancache.cpp @@ -63,4 +63,26 @@ bool BanCacheManager::RemoveHit(BanCacheHit *b) return true; } +void BanCacheManager::RehashCache() +{ + BanCacheHash* NewHash = new BanCacheHash(); + + BanCacheHash::iterator safei; + for (BanCacheHash::iterator n = BanHash->begin(); n != BanHash->end(); ) + { + safei = n; + safei++; + + /* Safe to delete items here through iterator 'n' */ + + /* Actually inserts a std::pair */ + NewHash->insert(*n); + /* End of safe section */ + + n = safei; + } + + delete BanHash; + BanHash = NewHash; +} -- cgit v1.3.1-10-gc9f91