Mercurial > hg > vampy
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 |