# HG changeset patch # User Chris Cannam # Date 1551185184 0 # Node ID c7694d24500c33f4d143f7b4836c24689db94698 # Parent 2a085624f9e4011d7d70ea81e59c5f1ff2f1a769 Fix crash when plugin library is loaded and unloaded without any plugins being queried (so extension manager is never initialised) diff -r 2a085624f9e4 -r c7694d24500c PyExtensionManager.cpp --- a/PyExtensionManager.cpp Tue Feb 19 14:30:03 2019 +0000 +++ b/PyExtensionManager.cpp Tue Feb 26 12:46:24 2019 +0000 @@ -47,7 +47,9 @@ NULL }; -PyExtensionManager::PyExtensionManager() +PyExtensionManager::PyExtensionManager() : + m_pyGlobalNamespace(0), + m_pyVampyNamespace(0) { DSTREAM << "Creating extension manager." << endl; } @@ -82,15 +84,22 @@ PyExtensionManager::~PyExtensionManager() { + if (!m_pyVampyNamespace) { + DSTREAM << "Vampy::~PyExtensionManager: manager was never initialised, or initialisation did not complete: not attempting cleanup" << endl; + return; + } + DSTREAM << "Cleaning locals..." << endl; cleanAllLocals(); DSTREAM << "Cleaning module..." << endl; - if (!cleanModule()) + if (!cleanModule()) { cerr << "Vampy::~PyExtensionManager: failed to clean extension module." << endl; - DSTREAM << "Vampy::~PyExtensionManager: Extension module cleaned." << endl; + } else { + DSTREAM << "Vampy::~PyExtensionManager: Extension module cleaned." << endl; + } }