From ee417e8fd02166c428f318a3b6dab33e094618f1 Mon Sep 17 00:00:00 2001 From: historic_bruno Date: Tue, 29 Nov 2011 00:14:34 +0000 Subject: [PATCH] Attempts to fix incorrect destructor order in random map generator. See #1037, #1035. This was SVN commit r10627. --- source/graphics/MapGenerator.cpp | 10 +++++++--- source/graphics/MapReader.cpp | 11 ++--------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/source/graphics/MapGenerator.cpp b/source/graphics/MapGenerator.cpp index cc90ceb6aa..f03d1dbcd4 100644 --- a/source/graphics/MapGenerator.cpp +++ b/source/graphics/MapGenerator.cpp @@ -37,6 +37,13 @@ CMapGeneratorWorker::~CMapGeneratorWorker() { // Wait for thread to end pthread_join(m_WorkerThread, NULL); + + // The StructuredClone destructor references a JSContext created by our + // ScriptInterface, so explicitly clean it up before ScriptInterface + m_MapData.reset(); + + // Cleanup ScriptInterface + delete m_ScriptInterface; } void CMapGeneratorWorker::Initialize(const VfsPath& scriptFile, const std::string& settings) @@ -73,9 +80,6 @@ void* CMapGeneratorWorker::RunThread(void *data) // and can die. The data will be stored in m_MapData already if successful, or m_Progress // will contain an error value on failure. - // Cleanup ScriptInterface - SAFE_DELETE(self->m_ScriptInterface); - return NULL; } diff --git a/source/graphics/MapReader.cpp b/source/graphics/MapReader.cpp index 5ef8d4d0cf..1d13be6527 100644 --- a/source/graphics/MapReader.cpp +++ b/source/graphics/MapReader.cpp @@ -1391,13 +1391,6 @@ int CMapReader::ParseCamera() CMapReader::~CMapReader() { // Cleaup objects - if (xml_reader) - { - delete xml_reader; - } - - if (m_MapGen) - { - delete m_MapGen; - } + delete xml_reader; + delete m_MapGen; }