diff --git a/core/AmPlugIn.cpp b/core/AmPlugIn.cpp index a63f4a9d..564dae5d 100644 --- a/core/AmPlugIn.cpp +++ b/core/AmPlugIn.cpp @@ -108,10 +108,18 @@ AmPlugIn::AmPlugIn() { } +static std::set deleted_factories; +static std::set deleted_factories_names; + static void delete_plugin_factory(std::pair pf) { - DBG("deleting plug-in factory: %s\n", pf.first.c_str()); - delete pf.second; + if ((deleted_factories.find(pf.second) == deleted_factories.end()) && + (deleted_factories_names.find(pf.first) == deleted_factories_names.end())) { + DBG("deleting plug-in factory: %s\n", pf.first.c_str()); + deleted_factories.insert(pf.second); + deleted_factories_names.insert(pf.first); + delete pf.second; + } } AmPlugIn::~AmPlugIn()