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; }