diff options
author | Andrei Karas <akaras@inbox.ru> | 2011-03-30 23:57:40 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2011-03-31 01:04:53 +0300 |
commit | 91a51ec64c35713914b22f2d9a283dc5b4091c12 (patch) | |
tree | 0289142a45284514a8981b02601c83ac1039dd5d /src/guild.cpp | |
parent | d629f56517f55d1fd756c4774d9a368d66f615df (diff) | |
download | plus-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.cpp | 34 |
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; + } } } |