diff PyExtensionManager.cpp @ 113:c7694d24500c

Fix crash when plugin library is loaded and unloaded without any plugins being queried (so extension manager is never initialised)
author Chris Cannam
date Tue, 26 Feb 2019 12:46:24 +0000
parents c4510e5f7a17
children
line wrap: on
line diff
--- 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;
+	}
 }