diff options
author | Andrei Karas <akaras@inbox.ru> | 2011-06-25 01:14:29 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2011-06-25 01:14:29 +0300 |
commit | 90982a892d9820663bde5f62ccc333841a547d69 (patch) | |
tree | 7d8d0a1efd1ea70a5bb0148c7afa7094c1c27f87 | |
parent | 2b2948138292432e0a88e0fe6790e8afd25a5871 (diff) | |
download | mv-90982a892d9820663bde5f62ccc333841a547d69.tar.gz mv-90982a892d9820663bde5f62ccc333841a547d69.tar.bz2 mv-90982a892d9820663bde5f62ccc333841a547d69.tar.xz mv-90982a892d9820663bde5f62ccc333841a547d69.zip |
Fix memory leaks in npchandler and npcdialog classes.
-rw-r--r-- | src/gui/npcdialog.cpp | 12 | ||||
-rw-r--r-- | src/net/tmwa/npchandler.cpp | 7 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/gui/npcdialog.cpp b/src/gui/npcdialog.cpp index d8dc68fd1..e8ea3388f 100644 --- a/src/gui/npcdialog.cpp +++ b/src/gui/npcdialog.cpp @@ -139,6 +139,15 @@ NpcDialog::~NpcDialog() { config.removeListener("logNpcInGui", this); + clearLayout(); + + delete mTextBox; + mTextBox = 0; + delete mClearButton; + mClearButton = 0; + delete mButton; + mButton = 0; + // These might not actually be in the layout, so lets be safe delete mScrollArea; mScrollArea = 0; @@ -157,6 +166,9 @@ NpcDialog::~NpcDialog() delete mItemLinkHandler; mItemLinkHandler = 0; + delete mListScrollArea; + mListScrollArea = 0; + instances.remove(this); } diff --git a/src/net/tmwa/npchandler.cpp b/src/net/tmwa/npchandler.cpp index 688635942..eb347db44 100644 --- a/src/net/tmwa/npchandler.cpp +++ b/src/net/tmwa/npchandler.cpp @@ -258,6 +258,13 @@ void NpcHandler::endShopping(int beingId _UNUSED_) void NpcHandler::clearDialogs() { + NpcDialogs::iterator it = mNpcDialogs.begin(); + NpcDialogs::iterator it_end = mNpcDialogs.end(); + while (it != it_end) + { + delete (*it).second.dialog; + ++ it; + } mNpcDialogs.clear(); } |