From 0c8fd1b9e6a4840bb573c26602f439e7c6ab9d7d Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Tue, 30 Mar 2010 13:16:43 -0600 Subject: Fix some memory issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Thorbjørn Lindeijer --- src/gui/theme.cpp | 1 + src/net/ea/generalhandler.cpp | 1 - src/net/ea/loginhandler.cpp | 5 +++++ src/net/ea/loginhandler.h | 2 ++ src/party.cpp | 12 ++++++++++++ src/party.h | 6 +++++- 6 files changed, 25 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/theme.cpp b/src/gui/theme.cpp index 33e9f301..1406a0d0 100644 --- a/src/gui/theme.cpp +++ b/src/gui/theme.cpp @@ -119,6 +119,7 @@ Theme::~Theme() { delete_all(mSkins); config.removeListener("guialpha", this); + delete_all(mProgressColors); } Theme *Theme::instance() diff --git a/src/net/ea/generalhandler.cpp b/src/net/ea/generalhandler.cpp index 021ae08d..749c2409 100644 --- a/src/net/ea/generalhandler.cpp +++ b/src/net/ea/generalhandler.cpp @@ -90,7 +90,6 @@ GeneralHandler::GeneralHandler(): mSpecialHandler(new SpecialHandler), mTradeHandler(new TradeHandler) { - //assert(false); static const Uint16 _messages[] = { SMSG_CONNECTION_PROBLEM, 0 diff --git a/src/net/ea/loginhandler.cpp b/src/net/ea/loginhandler.cpp index bec97ed7..730535b8 100644 --- a/src/net/ea/loginhandler.cpp +++ b/src/net/ea/loginhandler.cpp @@ -55,6 +55,11 @@ LoginHandler::LoginHandler() loginHandler = this; } +LoginHandler::~LoginHandler() +{ + delete_all(mWorlds); +} + void LoginHandler::handleMessage(Net::MessageIn &msg) { int code, worldCount; diff --git a/src/net/ea/loginhandler.h b/src/net/ea/loginhandler.h index 2fd6c661..4e31e64c 100644 --- a/src/net/ea/loginhandler.h +++ b/src/net/ea/loginhandler.h @@ -38,6 +38,8 @@ class LoginHandler : public MessageHandler, public Net::LoginHandler public: LoginHandler(); + ~LoginHandler(); + void handleMessage(Net::MessageIn &msg); void connect(); diff --git a/src/party.cpp b/src/party.cpp index b47c194a..22740489 100644 --- a/src/party.cpp +++ b/src/party.cpp @@ -46,6 +46,12 @@ Party::Party(short id): { parties[id] = this; } + +Party::~Party() +{ + clearMembers(); +} + PartyMember *Party::addMember(int id, const std::string &name) { PartyMember *m; @@ -132,7 +138,9 @@ void Party::removeMember(PartyMember *member) if((*itr)->mId == member->mId && (*itr)->getName() == member->getName()) { + PartyMember *member = (*itr); mMembers.erase(itr); + delete member; } ++itr; } @@ -146,7 +154,9 @@ void Party::removeMember(int id) { if((*itr)->mId == id) { + PartyMember *member = (*itr); mMembers.erase(itr); + delete member; } ++itr; } @@ -160,7 +170,9 @@ void Party::removeMember(const std::string &name) { if((*itr)->getName() == name) { + PartyMember *member = (*itr); mMembers.erase(itr); + delete member; } ++itr; } diff --git a/src/party.h b/src/party.h index d50ed7b0..c9d26672 100644 --- a/src/party.h +++ b/src/party.h @@ -25,6 +25,8 @@ #include "gui/widgets/avatarlistbox.h" +#include "utils/dtor.h" + #include #include #include @@ -132,7 +134,7 @@ public: */ void removeMember(const std::string &name); - void clearMembers() { mMembers.clear(); } + void clearMembers() { delete_all(mMembers); mMembers.clear(); } void removeFromMembers(); @@ -176,6 +178,8 @@ private: */ Party(short id); + ~Party(); + typedef std::vector MemberList; MemberList mMembers; std::string mName; -- cgit v1.2.3-60-g2f50