From 8fe6bb55dd542b50a4796fd6e23bf99d83b6acab Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Sun, 18 Aug 2013 00:39:15 +0200 Subject: Fixed LuaWindow destructor causing a crash. It was leaving the m_Contents' relations to listeners and SlotAreas' relations to m_Contents, which were already gone. --- source/LuaWindow.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source') diff --git a/source/LuaWindow.cpp b/source/LuaWindow.cpp index 18cc7650e..1dcfc885f 100644 --- a/source/LuaWindow.cpp +++ b/source/LuaWindow.cpp @@ -48,6 +48,16 @@ cLuaWindow::cLuaWindow(cWindow::WindowType a_WindowType, int a_SlotsX, int a_Slo cLuaWindow::~cLuaWindow() { + m_Contents.RemoveListener(*this); + + // Must delete slot areas now, because they are referencing this->m_Contents and would try to access it in cWindow's + // destructor, when the member is already gone. + for (cSlotAreas::iterator itr = m_SlotAreas.begin(), end = m_SlotAreas.end(); itr != end; ++itr) + { + delete *itr; + } + m_SlotAreas.clear(); + ASSERT(m_OpenedBy.empty()); } -- cgit v1.2.3