diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2023-05-15 16:09:09 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2023-05-15 16:09:15 +0200 |
commit | 1992ce920eb5268be9487b3bba6d28353d871111 (patch) | |
tree | 0674c82a0726135c0a5d136a359f841d503c510f /src/chat-server/guildhandler.cpp | |
parent | f395960adeea1f51f01ec8045d1e175926a6ea4a (diff) | |
download | manaserv-1992ce920eb5268be9487b3bba6d28353d871111.tar.gz manaserv-1992ce920eb5268be9487b3bba6d28353d871111.tar.bz2 manaserv-1992ce920eb5268be9487b3bba6d28353d871111.tar.xz manaserv-1992ce920eb5268be9487b3bba6d28353d871111.zip |
Manage CharacterData using std::unique_ptr
Fixes many memory leaks, but also made it clear that we're very often
loading all the character data only to immediately throw it away again,
even when most of the time all we really need is the database ID or the
name.
Diffstat (limited to 'src/chat-server/guildhandler.cpp')
-rw-r--r-- | src/chat-server/guildhandler.cpp | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/chat-server/guildhandler.cpp b/src/chat-server/guildhandler.cpp index a47f8073..e69079e5 100644 --- a/src/chat-server/guildhandler.cpp +++ b/src/chat-server/guildhandler.cpp @@ -116,14 +116,11 @@ void ChatHandler::sendGuildListUpdate(Guild *guild, msg.writeInt16(guild->getId()); msg.writeString(characterName); msg.writeInt8(eventId); - std::map<std::string, ChatClient*>::const_iterator chr; - std::list<GuildMember*> members = guild->getMembers(); - for (std::list<GuildMember*>::const_iterator itr = members.begin(); - itr != members.end(); ++itr) + for (auto guildMember : guild->getMembers()) { - CharacterData *c = storage->getCharacter((*itr)->mId, nullptr); - chr = mPlayerMap.find(c->getName()); + auto c = storage->getCharacter(guildMember->mId, nullptr); + auto chr = mPlayerMap.find(c->getName()); if (chr != mPlayerMap.end()) { chr->second->send(msg); @@ -283,13 +280,11 @@ void ChatHandler::handleGuildGetMembers(ChatClient &client, MessageIn &msg) { reply.writeInt8(ERRMSG_OK); reply.writeInt16(guildId); - std::list<GuildMember*> memberList = guild->getMembers(); - std::list<GuildMember*>::const_iterator itr_end = memberList.end(); - for (auto itr = memberList.begin(); - itr != itr_end; ++itr) + + for (auto guildMember : guild->getMembers()) { - CharacterData *c = storage->getCharacter((*itr)->mId, nullptr); - std::string memberName = c->getName(); + auto c = storage->getCharacter(guildMember->mId, nullptr); + const std::string &memberName = c->getName(); reply.writeString(memberName); reply.writeInt8(mPlayerMap.find(memberName) != mPlayerMap.end()); } @@ -313,7 +308,7 @@ void ChatHandler::handleGuildMemberLevelChange(ChatClient &client, std::string user = msg.readString(); short level = msg.readInt8(); Guild *guild = guildManager->findById(guildId); - CharacterData *c = storage->getCharacter(user); + auto c = storage->getCharacter(user); if (guild && c) { |