From c58b9d8da32cf52ecf2e244296866fac76e09ba4 Mon Sep 17 00:00:00 2001
From: Selat <LongExampleTestName@gmail.com>
Date: Sat, 29 Mar 2014 10:40:33 +0300
Subject: [PATCH] ban.cpp refactoring

---
 src/ban.cpp | 29 ++++++++++-------------------
 1 file changed, 10 insertions(+), 19 deletions(-)

diff --git a/src/ban.cpp b/src/ban.cpp
index 8f543b235..55d9b22fe 100644
--- a/src/ban.cpp
+++ b/src/ban.cpp
@@ -57,18 +57,16 @@ void BanManager::load()
 		throw SerializationError("BanManager::load(): Couldn't open file");
 	}
 	
-	for(;;)
+	while(!is.eof() && is.good())
 	{
-		if(is.eof() || is.good() == false)
-			break;
 		std::string line;
 		std::getline(is, line, '\n');
 		Strfnd f(line);
 		std::string ip = trim(f.next("|"));
 		std::string name = trim(f.next("|"));
-		if(ip.empty())
-			continue;
-		m_ips[ip] = name;
+		if(!ip.empty()) {
+			m_ips[ip] = name;
+		}
 	}
 	m_modified = false;
 }
@@ -135,22 +133,15 @@ void BanManager::add(const std::string &ip, const std::string &name)
 void BanManager::remove(const std::string &ip_or_name)
 {
 	JMutexAutoLock lock(m_mutex);
-	//m_ips.erase(m_ips.find(ip));
-	// Find out all ip-name pairs that match the ip or name
-	std::set<std::string> ips_to_delete;
 	for(std::map<std::string, std::string>::iterator
 			i = m_ips.begin();
-			i != m_ips.end(); i++)
-	{
-		if(i->first == ip_or_name || i->second == ip_or_name)
-			ips_to_delete.insert(i->first);
-	}
-	// Erase them
-	for(std::set<std::string>::iterator
-			i = ips_to_delete.begin();
-			i != ips_to_delete.end(); i++)
+			i != m_ips.end();)
 	{
-		m_ips.erase(*i);
+		if((i->first == ip_or_name) || (i->second == ip_or_name)) {
+			m_ips.erase(i++);
+		} else {
+			++i;
+		}
 	}
 	m_modified = true;
 }
-- 
GitLab