summaryrefslogtreecommitdiff
path: root/src/guild.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-03-30 23:57:40 +0300
committerAndrei Karas <akaras@inbox.ru>2011-03-31 01:04:53 +0300
commit91a51ec64c35713914b22f2d9a283dc5b4091c12 (patch)
tree0289142a45284514a8981b02601c83ac1039dd5d /src/guild.cpp
parentd629f56517f55d1fd756c4774d9a368d66f615df (diff)
downloadplus-91a51ec64c35713914b22f2d9a283dc5b4091c12.tar.gz
plus-91a51ec64c35713914b22f2d9a283dc5b4091c12.tar.bz2
plus-91a51ec64c35713914b22f2d9a283dc5b4091c12.tar.xz
plus-91a51ec64c35713914b22f2d9a283dc5b4091c12.zip
Fix memory leaks and some other errors.
Diffstat (limited to 'src/guild.cpp')
-rw-r--r--src/guild.cpp34
1 files changed, 26 insertions, 8 deletions
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;
+ }
}
}