summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-08-27 18:41:30 +0300
committerAndrei Karas <akaras@inbox.ru>2011-08-27 18:41:30 +0300
commit26dea46cf8ebcd22c62810bd9c866e7e7e2b6cb2 (patch)
tree5e6ecf428f1716082214db65928848a849f9d109
parent96ca346fe114804609acea0b13594422f3f09002 (diff)
downloadplus-26dea46cf8ebcd22c62810bd9c866e7e7e2b6cb2.tar.gz
plus-26dea46cf8ebcd22c62810bd9c866e7e7e2b6cb2.tar.bz2
plus-26dea46cf8ebcd22c62810bd9c866e7e7e2b6cb2.tar.xz
plus-26dea46cf8ebcd22c62810bd9c866e7e7e2b6cb2.zip
Fix memory leaks in guildmanager.
-rw-r--r--src/game.cpp3
-rw-r--r--src/guildmanager.cpp11
-rw-r--r--src/guildmanager.h2
3 files changed, 16 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp
index c933378e6..6a3a63bb6 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -299,6 +299,9 @@ static void destroyGuiWindows()
if (whoIsOnline)
whoIsOnline->setAllowUpdate(false);
+ if (guildManager)
+ guildManager->clear();
+
del_0(windowMenu);
del_0(localChatTab) // Need to do this first, so it can remove itself
del_0(debugChatTab)
diff --git a/src/guildmanager.cpp b/src/guildmanager.cpp
index bc4158a12..c929e8598 100644
--- a/src/guildmanager.cpp
+++ b/src/guildmanager.cpp
@@ -50,6 +50,7 @@ GuildManager::GuildManager() :
GuildManager::~GuildManager()
{
+ delete mTab;
mTab = 0;
}
@@ -360,3 +361,13 @@ void GuildManager::notice(std::string msg)
else
send("!setmotd " + msg);
}
+
+void GuildManager::clear()
+{
+ if (socialWindow)
+ {
+ Guild *guild = Guild::getGuild(1);
+ if (guild)
+ socialWindow->removeTab(guild);
+ }
+} \ No newline at end of file
diff --git a/src/guildmanager.h b/src/guildmanager.h
index a46cba915..88e1276eb 100644
--- a/src/guildmanager.h
+++ b/src/guildmanager.h
@@ -66,6 +66,8 @@ class GuildManager
Guild *createGuild();
+ void clear();
+
bool havePower()
{ return mHavePower; }