From 91a51ec64c35713914b22f2d9a283dc5b4091c12 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 30 Mar 2011 23:57:40 +0300 Subject: Fix memory leaks and some other errors. --- src/guild.cpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'src/guild.cpp') diff --git a/src/guild.cpp b/src/guild.cpp index 726749b7a..21c066070 100644 --- a/src/guild.cpp +++ b/src/guild.cpp @@ -150,6 +150,7 @@ void Guild::removeMember(GuildMember *member) { mMembers.erase(itr); delete *itr; + return; } ++itr; } @@ -157,25 +158,42 @@ void Guild::removeMember(GuildMember *member) void Guild::removeMember(int id) { + bool deleted = true; MemberList::iterator itr = mMembers.begin(), itr_end = mMembers.end(); - while (itr != itr_end) + while (deleted) { - if ((*itr)->mId == id) - mMembers.erase(itr); - ++itr; + deleted = false; + while (itr != itr_end) + { + if ((*itr)->mId == id) + { + mMembers.erase(itr); + deleted = true; + break; + } + ++itr; + } } } void Guild::removeMember(const std::string &name) { + bool deleted = true; MemberList::iterator itr = mMembers.begin(), itr_end = mMembers.end(); - while (itr != itr_end) + while (deleted) { - if ((*itr)->getName() == name) - mMembers.erase(itr); - ++itr; + while (itr != itr_end) + { + if ((*itr)->getName() == name) + { + mMembers.erase(itr); + deleted = true; + break; + } + ++itr; + } } } -- cgit v1.2.3-60-g2f50