comparison 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
comparison
equal deleted inserted replaced
112:2a085624f9e4 113:c7694d24500c
45 */ 45 */
46 46
47 NULL 47 NULL
48 }; 48 };
49 49
50 PyExtensionManager::PyExtensionManager() 50 PyExtensionManager::PyExtensionManager() :
51 m_pyGlobalNamespace(0),
52 m_pyVampyNamespace(0)
51 { 53 {
52 DSTREAM << "Creating extension manager." << endl; 54 DSTREAM << "Creating extension manager." << endl;
53 } 55 }
54 56
55 bool 57 bool
80 } 82 }
81 83
82 84
83 PyExtensionManager::~PyExtensionManager() 85 PyExtensionManager::~PyExtensionManager()
84 { 86 {
87 if (!m_pyVampyNamespace) {
88 DSTREAM << "Vampy::~PyExtensionManager: manager was never initialised, or initialisation did not complete: not attempting cleanup" << endl;
89 return;
90 }
91
85 DSTREAM << "Cleaning locals..." << endl; 92 DSTREAM << "Cleaning locals..." << endl;
86 93
87 cleanAllLocals(); 94 cleanAllLocals();
88 95
89 DSTREAM << "Cleaning module..." << endl; 96 DSTREAM << "Cleaning module..." << endl;
90 97
91 if (!cleanModule()) 98 if (!cleanModule()) {
92 cerr << "Vampy::~PyExtensionManager: failed to clean extension module." << endl; 99 cerr << "Vampy::~PyExtensionManager: failed to clean extension module." << endl;
93 DSTREAM << "Vampy::~PyExtensionManager: Extension module cleaned." << endl; 100 } else {
101 DSTREAM << "Vampy::~PyExtensionManager: Extension module cleaned." << endl;
102 }
94 } 103 }
95 104
96 105
97 106
98 void 107 void