From 13f949c0542e180486fbe75d739a0f9f715c2faf Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Tue, 18 May 2010 21:09:41 +0000 Subject: [PATCH] prevent factories from double deletion git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1915 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- core/AmPlugIn.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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()