[Debtags-commits] [svn] r2080 - in tagcoll/2.0: . tools
Enrico Zini
enrico at alioth.debian.org
Fri Nov 17 20:31:02 CET 2006
Author: enrico
Date: Fri Nov 17 20:31:02 2006
New Revision: 2080
Modified:
tagcoll/2.0/ (props changed)
tagcoll/2.0/tools/tagcoll.cc
Log:
r3651 at viaza: enrico | 2006-11-17 20:30:22 +0100
Deallocate things in reverse allocation order, to try and preserve filter connections during execution of destructors
Modified: tagcoll/2.0/tools/tagcoll.cc
==============================================================================
--- tagcoll/2.0/tools/tagcoll.cc (original)
+++ tagcoll/2.0/tools/tagcoll.cc Fri Nov 17 20:31:02 2006
@@ -362,19 +362,26 @@
class FilterStepManager
{
- std::set<FilterStep*> m_managed;
+ // Use a vector to be able to deallocate in reverse order
+ std::vector<FilterStep*> m_managed;
public:
~FilterStepManager()
{
- for (std::set<FilterStep*>::const_iterator i = m_managed.begin();
- i != m_managed.end(); ++i)
+ for (std::vector<FilterStep*>::const_reverse_iterator i = m_managed.rbegin();
+ i != m_managed.rend(); ++i)
if (*i)
delete *i;
}
FilterStep* manage(FilterStep* fs)
{
- m_managed.insert(fs);
+ // Avoid double insert
+ for (std::vector<FilterStep*>::const_iterator i = m_managed.begin();
+ i != m_managed.end(); ++i)
+ if (*i == fs)
+ return fs;
+
+ m_managed.push_back(fs);
return fs;
}
};
More information about the Debtags-commits
mailing list